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

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

眾所不周知,其實計算機(jī)算不出 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é)果掄圓了準(zhǔn)備打我的小臉。


自制

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


自制

那問題到底出在哪兒?

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

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


自制

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

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

看不出來也不要緊,我們只要記?。?/strong>我們十進(jìn)制世界里大部分稀松平常的小數(shù),二進(jìn)制都是無法精準(zhǔn)表達(dá)的。

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

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

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

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


自制

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

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

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

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


梅開二度、二度返場|《夏洛特?zé)馈?/strong>

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

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

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

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

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

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

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

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

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


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



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

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

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

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

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

認(rèn)識誤差,理解誤差,最終學(xué)會與誤差共存,并控制它。

????

參考資料:

[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

特別聲明:以上內(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)推薦
熱點推薦
固態(tài)電池靠邊站!國產(chǎn)王炸截胡,安全電車或降至4萬

固態(tài)電池靠邊站!國產(chǎn)王炸截胡,安全電車或降至4萬

藍(lán)色海邊
2026-04-17 18:25:24
旅游路上怎么全是大媽?大爺都去哪兒了?網(wǎng)友分析讓人爆笑到飆淚

旅游路上怎么全是大媽?大爺都去哪兒了?網(wǎng)友分析讓人爆笑到飆淚

西樓知趣雜談
2026-04-18 15:31:29
美媒:中國“殲-50”可能只是F-47隱身戰(zhàn)斗機(jī)的“低配仿制型號”

美媒:中國“殲-50”可能只是F-47隱身戰(zhàn)斗機(jī)的“低配仿制型號”

零度Military
2026-04-18 14:36:44
別再尬演情婦了!一臉疲態(tài)、五大三粗,這是迷倒男人該有的皮囊?

別再尬演情婦了!一臉疲態(tài)、五大三粗,這是迷倒男人該有的皮囊?

白面書誏
2026-04-14 14:09:53
拉比奧特一劍封喉,邁尼昂神撲救主,AC米蘭1-0送維羅納11連敗

拉比奧特一劍封喉,邁尼昂神撲救主,AC米蘭1-0送維羅納11連敗

釘釘陌上花開
2026-04-19 23:07:29
3年前就戳穿西貝預(yù)制菜沒人信,如今被實錘!這個探店博主藏得太深了

3年前就戳穿西貝預(yù)制菜沒人信,如今被實錘!這個探店博主藏得太深了

馬蹄燙嘴說美食
2026-04-15 18:29:48
人狂必有禍!不顧央視警告,與劉濤傳緋聞的楊爍,下場怪不了別人

人狂必有禍!不顧央視警告,與劉濤傳緋聞的楊爍,下場怪不了別人

陳意小可愛
2026-04-20 06:31:33
馬筱梅與玥箖割席后,硬要帶親媽住婆婆的別墅,張?zhí)m終于不再沉默

馬筱梅與玥箖割席后,硬要帶親媽住婆婆的別墅,張?zhí)m終于不再沉默

老屬科普
2026-04-18 06:08:23
杭州阿里程序員王偉:50萬投洛陽鉬業(yè),6年賺300萬

杭州阿里程序員王偉:50萬投洛陽鉬業(yè),6年賺300萬

真實人物采訪
2026-04-17 15:55:03
久保建英成為首個奪得國王杯的日本球員,也是其個人生涯首冠

久保建英成為首個奪得國王杯的日本球員,也是其個人生涯首冠

懂球帝
2026-04-19 15:42:52
寧波為什么沒有成為熱門旅游地?網(wǎng)友:寧波最好的就是三步一廁所

寧波為什么沒有成為熱門旅游地?網(wǎng)友:寧波最好的就是三步一廁所

君笙的拂兮
2026-03-27 12:25:59
巴基斯坦總理和伊朗總統(tǒng)通話

巴基斯坦總理和伊朗總統(tǒng)通話

財聯(lián)社
2026-04-20 01:54:04
世體:阿爾瓦雷斯和巴斯托尼都將加盟巴薩視為首選

世體:阿爾瓦雷斯和巴斯托尼都將加盟巴薩視為首選

懂球帝
2026-04-20 07:07:06
女演員千萬別整容《八千里路云和月》看43歲萬茜和24歲王和就知道

女演員千萬別整容《八千里路云和月》看43歲萬茜和24歲王和就知道

亦暖追劇隨筆
2026-04-17 12:28:50
開走第2輛保時捷!萊巴金娜橫掃復(fù)仇,奪賽季第2冠+生涯第13冠

開走第2輛保時捷!萊巴金娜橫掃復(fù)仇,奪賽季第2冠+生涯第13冠

全景體育V
2026-04-19 21:21:01
33歲章澤天風(fēng)格大變!穿艷俗紗裙、副乳突出,比實際年齡成熟10歲

33歲章澤天風(fēng)格大變!穿艷俗紗裙、副乳突出,比實際年齡成熟10歲

阿訊說天下
2026-04-18 14:53:39
20-30元一天,蕭山有家開了48年的古早風(fēng)旅館,老板身份不簡單

20-30元一天,蕭山有家開了48年的古早風(fēng)旅館,老板身份不簡單

蕭內(nèi)網(wǎng)
2026-04-19 20:36:01
李連杰和利智合照曝光,他們已老的難以想象,“換心”謠言被澄清

李連杰和利智合照曝光,他們已老的難以想象,“換心”謠言被澄清

王楔曉
2026-04-19 20:20:07
從1億巨虧到抄底封神!瓜迪奧拉終于學(xué)乖了,曼城摸到了終極密碼

從1億巨虧到抄底封神!瓜迪奧拉終于學(xué)乖了,曼城摸到了終極密碼

章蠞戶外
2026-04-19 17:53:29
醫(yī)生:肝癌最危險信號,不是腹痛,而是頻繁出現(xiàn)這幾種異常

醫(yī)生:肝癌最危險信號,不是腹痛,而是頻繁出現(xiàn)這幾種異常

芹姐說生活
2026-04-19 12:20:30
2026-04-20 07:27:00
一起神回復(fù) incentive-icons
一起神回復(fù)
神回復(fù)、高級黑、內(nèi)涵帝
5013文章數(shù) 22815關(guān)注度
往期回顧 全部

科技要聞

50分26秒破人類紀(jì)錄!300臺機(jī)器人狂飆半馬

頭條要聞

半年下沉22厘米 女子家中坐擁價值上億別墅卻沒法住人

頭條要聞

半年下沉22厘米 女子家中坐擁價值上億別墅卻沒法住人

體育要聞

湖人1比0火箭:老詹比烏度卡像教練

娛樂要聞

何潤東漲粉百萬!內(nèi)娛隔空掀桌第一人

財經(jīng)要聞

華誼兄弟,8年虧光85億

汽車要聞

29分鐘大定破萬 極氪8X為什么這么多人買?

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

房產(chǎn)
數(shù)碼
親子
家居
教育

房產(chǎn)要聞

官宣簽約最強(qiáng)城更!??跇鞘?,突然殺入神秘房企!

數(shù)碼要聞

華為新機(jī)發(fā)布前瞻:闊折疊X Max+影像旗艦Pura 90,都沒懸念了

親子要聞

孩子總打噴嚏、起疹子,時過敏嗎?

家居要聞

法式線條 時光靜淌

教育要聞

中國為什么不禁網(wǎng)絡(luò)游戲?

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