国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

為啥計算機算不出0.1+0.2=0.3?

0
分享至


《夏洛特煩惱》

撰文 | 烏其多

審校 | 劉六七

???????????????????????????????????????????????????????????????????????

眾所不周知,大部分編程語言都算不出0.1+0.2=0.3。

比如Javascript一通計算下的結(jié)果就為:0.30000000000000004!


cloud.tencent

你可能會說:“你先等會兒!”

然后打開windows上自帶的計算器,輸入“0.1+0.2”,然后拿著計算結(jié)果掄圓了準備打我的小臉。


自制

其實,計算器看似正確的結(jié)果,只是計算器把存在精度問題的最后幾位在顯示的時候舍入掉了而已。我們可以理解為這是一種“障眼法”。


自制

那問題到底出在哪兒?

要理解這個現(xiàn)象,得先搞明白計算機是怎么看待小數(shù)的。

我們平時用的是十進制,但計算機只懂二進制,也就是那一堆0和1。把十進制小數(shù)轉(zhuǎn)成二進制,用的是“乘2取整”法。以 0.1 為例:


自制

看出來了嗎?0.1 的二進制是無限循環(huán)的:0.00011001100110011……(0011 循環(huán))。

同樣,0.2 的二進制也是無限循環(huán):0.0011001100110011……(0011 循環(huán))。

看不出來也不要緊,我們只要記住:我們十進制世界里大部分稀松平常的小數(shù),二進制都是無法精準表達的。

0.1 和 0.2在二進制世界里,就是“無限循環(huán)小數(shù)”,也就如同十進制無法精確表示 1/3 一樣。

除了0.1和0.2以外,π、√2等數(shù)學上的無理數(shù)(無限不循環(huán)小數(shù)),二進制下更是超綱了,計算機同樣也是無法精確表示的。

弄懂了這個概念,我們再來看計算機的存儲法則。

我們現(xiàn)在主流的編程語言,通用的存儲法基本都是“IEEE 754浮點數(shù)標準”,只要是使用了這個存儲標準的語言,比如JavaScript、C/C++、Java、以及曾號稱人人都應(yīng)該掌握的Python等等,都是無法準確計算出“0.1+0.2=0.3”的。


自制

IEEE 754是由電氣與電子工程師協(xié)會(IEEE)于1985年制定的浮點運算技術(shù)標準。

在這部“數(shù)字憲法”制定之前,各大計算機廠家都有自己的浮點數(shù)存儲法則,你不兼容我的,我不care你的,主打一個各論各的,造成了很多混亂。

IEEE 754標準就規(guī)定了浮點數(shù)在計算機中的存儲格式,常見的有32位單精度和64位雙精度。每個數(shù)被拆分為符號位、指數(shù)位和尾數(shù)位三部分,尾數(shù)位長度是固定的(如雙精度為52位),那么遇到無限循環(huán)或者無限不循環(huán)小數(shù)的時候,怎么辦?那就是把尾數(shù)“一剪沒”了。

這樣截斷或舍入,就給0.1和0.2造成了存儲誤差。兩個近似值相加,誤差累積,就導致了0.1+0.2≠0.3的現(xiàn)象。


梅開二度、二度返場|《夏洛特煩惱》

你可能又得問:浮點數(shù)存儲為啥非得把尾數(shù)截了?計算機這么牛,全存了不行嗎?

答案很簡單:不是不想,是做不到。

很多人以為計算機存儲和計算都是絕對精確的,其實這是個誤解。

存整數(shù)確實可以——比如數(shù)字 42,轉(zhuǎn)成二進制 101010,放進固定大小的空間里,只要空間夠大(不溢出),拿出來還是 42,分毫不差。就像把雞蛋放進倉庫,拿出來還是那個雞蛋。

但問題是,數(shù)學世界里的數(shù)遠不止如此。無限循環(huán)和無限不循環(huán)的數(shù),遠遠多于整數(shù)。

計算機的存儲空間是有限的,無論用多少位,都裝不下一個無限長的二進制串。所以,它只能截取前幾十位,后面的直接扔掉。

你可能又會想:那能不能把空間做得再大點,存更多位?從幾十位變成幾百位也行?。?/strong>

理論上可以,但實際意義不大。

對絕大多數(shù)工程、圖形、科學計算來說,“IEEE 754浮點數(shù)存儲法”所用的 64 位雙精度(約 15-17 位有效數(shù)字)已經(jīng)足夠精確。


對不同領(lǐng)域來說,計算精度要求是不同的,天文學家能算準光年就很牛了|網(wǎng)絡(luò)



如設(shè)計飛機、渲染電影、模擬天氣,沒人需要知道 π 的第10000位是什么(當然,π能不能算到最后一位,在數(shù)學上意義重大,可能意味著數(shù)學大廈的地基比如微積分、極限理論被動搖)。況且,無理數(shù)有無窮多個,再大的空間也裝不完。

所以計算機選擇了一種“務(wù)實”的策略:用有限的存儲,近似地表示所有的實數(shù)。專業(yè)的相關(guān)學科就叫做計算機數(shù)值分析,研究的就是“近似”的藝術(shù)。

對于任何一個數(shù)值計算問題,數(shù)值分析都會追問:誤差有多大?算法快不快?結(jié)果穩(wěn)不穩(wěn)?能不能算出來?只要這四個問題都能給出滿意的答案,那就是合格的計算結(jié)果。

回到 0.1 + 0.2。這不是程序的 bug,而是二進制與有限存儲共同作用的必然結(jié)果。

理解這個“誤差”,就是數(shù)值分析教給我們的最重要一課:

認識誤差,理解誤差,最終學會與誤差共存,并控制它。

????

參考資料:

[1]https://bbs.huaweicloud.com/blogs/287063

[2] https://www.puntoflotante.net/FLOATING-POINT-FORMAT-IEEE-754.htm

[3]https://www.h-schmidt.net/FloatConverter/IEEE754.html

原創(chuàng)文章版權(quán)歸微信公眾號
“把科學帶回家”所有

轉(zhuǎn)載請聯(lián)系:bd@wanwuweb.com

凡本公眾號轉(zhuǎn)載、引用的文章 、圖片、音頻、視頻文件等資料的版權(quán)歸版權(quán)所有人所有,因此產(chǎn)生相關(guān)后果,由版權(quán)所有人、原始發(fā)布者和內(nèi)容提供者承擔,如有侵權(quán)請聯(lián)系刪除。

??

▲ 關(guān)注我們,點亮在看,分享一下?

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點推薦
一代神車,退場了

一代神車,退場了

鳳凰網(wǎng)財經(jīng)
2026-03-26 19:58:07
國安球迷炸鍋了!4輪不勝排名逼近降級區(qū),蒙哥馬利下課沒商量?

國安球迷炸鍋了!4輪不勝排名逼近降級區(qū),蒙哥馬利下課沒商量?

羅掌柜體育
2026-04-13 06:00:14
17 歲天才破門封神!利物浦水貨前鋒徹底涼了,恐再無出場資格

17 歲天才破門封神!利物浦水貨前鋒徹底涼了,恐再無出場資格

瀾歸序
2026-04-13 06:33:30
徐江:成都主帥技戰(zhàn)術(shù)能力強,國安主帥有框架但隨意,浙江這位慢吞吞

徐江:成都主帥技戰(zhàn)術(shù)能力強,國安主帥有框架但隨意,浙江這位慢吞吞

懂球帝
2026-04-12 23:09:00
李谷一24歲的時候,喜歡上導師金鐵霖,生活了一段,又匆匆分開!

李谷一24歲的時候,喜歡上導師金鐵霖,生活了一段,又匆匆分開!

手工制作阿殲
2026-04-12 12:30:02
美伊談判沒有成功,但分出了輸贏,過程比結(jié)果更精彩

美伊談判沒有成功,但分出了輸贏,過程比結(jié)果更精彩

明人明察
2026-04-12 13:14:54
降脂針價格大跳水!入醫(yī)保后僅需300元,醫(yī)生提醒:并非人人能打

降脂針價格大跳水!入醫(yī)保后僅需300元,醫(yī)生提醒:并非人人能打

風風順
2026-04-13 03:10:03
八路軍最悲壯的主力團,團長營長全戰(zhàn)死,副團長成了二野頭號虎將

八路軍最悲壯的主力團,團長營長全戰(zhàn)死,副團長成了二野頭號虎將

史之銘
2026-04-12 16:48:19
“只剩咱倆了,你也100了,都不容易”!查爾斯國王看望百歲保姆

“只剩咱倆了,你也100了,都不容易”!查爾斯國王看望百歲保姆

書醬瞄瞄
2026-03-20 15:37:53
瞞不住了!鄭麗文訪陸,臺灣縣市長集體發(fā)聲

瞞不住了!鄭麗文訪陸,臺灣縣市長集體發(fā)聲

果媽聊娛樂
2026-04-12 10:57:11
范戴克掀桌:票價漲9%沒商量,利物浦球迷集體破防

范戴克掀桌:票價漲9%沒商量,利物浦球迷集體破防

體壇觀察猿
2026-04-13 06:42:40
重磅:第四座“雙機場”城市,來了!

重磅:第四座“雙機場”城市,來了!

新浪財經(jīng)
2026-04-13 00:42:31
大雨過后,武漢街頭多處出現(xiàn),不是蘑菇!專家提醒:不要隨便吃,小心中毒

大雨過后,武漢街頭多處出現(xiàn),不是蘑菇!專家提醒:不要隨便吃,小心中毒

極目新聞
2026-04-12 18:55:16
李想在朋友圈飆臟話!疑似炮轟東風日產(chǎn)

李想在朋友圈飆臟話!疑似炮轟東風日產(chǎn)

鞭牛士
2026-04-11 16:34:04
夜已深,關(guān)于明日A股的行情,我再強調(diào)幾句,防止有人沒有看到

夜已深,關(guān)于明日A股的行情,我再強調(diào)幾句,防止有人沒有看到

風風順
2026-04-13 04:15:03
天仙被聯(lián)手打壓?迪麗熱巴補償粉絲?趙子琪懟節(jié)目組?鄧凱深夜看女主播?姨太問答

天仙被聯(lián)手打壓?迪麗熱巴補償粉絲?趙子琪懟節(jié)目組?鄧凱深夜看女主播?姨太問答

毒舌扒姨太
2026-04-12 22:41:46
?;鸲虝?,伊朗海峽反擊以軍轟炸致254死

?;鸲虝海晾屎{反擊以軍轟炸致254死

遁走的兩輪
2026-04-12 12:48:55
60746人見證!18歲亞馬爾百場封神,西蒙尼三連敗遭質(zhì)疑

60746人見證!18歲亞馬爾百場封神,西蒙尼三連敗遭質(zhì)疑

番茄體壇
2026-04-12 14:07:47
太難了!4外援打“養(yǎng)生球”,本土球員傷了9人,僅剩3個“菜鳥”

太難了!4外援打“養(yǎng)生球”,本土球員傷了9人,僅剩3個“菜鳥”

金山話體育
2026-04-12 09:04:07
俄羅斯第四大煉油廠被炸,現(xiàn)場火光沖天!

俄羅斯第四大煉油廠被炸,現(xiàn)場火光沖天!

知兵
2026-04-13 00:01:45
2026-04-13 07:08:49
萬物雜志
萬物雜志
面向未來的科學教育
3287文章數(shù) 103918關(guān)注度
往期回顧 全部

科技要聞

理想稱遭惡意拉踩,東風日產(chǎn):尊重同行

頭條要聞

特朗普:將封鎖任何試圖進出霍爾木茲海峽的船只

頭條要聞

特朗普:將封鎖任何試圖進出霍爾木茲海峽的船只

體育要聞

創(chuàng)造歷史!五大聯(lián)賽首位女性主教練誕生

娛樂要聞

賭王女兒何超蕸病逝,常年和乳癌斗爭

財經(jīng)要聞

美伊談判破裂的三大癥結(jié)

汽車要聞

煥新極氪007/007GT上市 限時19.39萬起

態(tài)度原創(chuàng)

藝術(shù)
教育
數(shù)碼
健康
公開課

藝術(shù)要聞

朱元璋去拜佛,問方丈:“朕要跪下嗎?”方丈答了8個字救了全寺的人

教育要聞

留學行業(yè)的寒冬已經(jīng)來了!

數(shù)碼要聞

Linux圈徹底炸鍋!Valve神級補丁拯救8G顯卡:硬搶顯存游戲性能起飛

干細胞抗衰4大誤區(qū),90%的人都中招

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進入關(guān)懷版