网易首页 > 网易号 > 正文 申请入驻

为啥计算机算不出0.1+0.2=0.3?

0
分享至


《夏洛特烦恼》

撰文 | 乌其多

审校 | 刘六七

‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

众所不周知,大部分编程语言都算不出0.1+0.2=0.3。

比如Javascript一通计算下的结果就为:0.30000000000000004


cloud.tencent

你可能会说:“你先等会儿!”

然后打开windows上自带的计算器,输入“0.1+0.2”,然后拿着计算结果抡圆了准备打我的小脸。


自制

其实,计算器看似正确的结果,只是计算器把存在精度问题的最后几位在显示的时候舍入掉了而已。我们可以理解为这是一种“障眼法”。


自制

那问题到底出在哪儿?

要理解这个现象,得先搞明白计算机是怎么看待小数的。

我们平时用的是十进制,但计算机只懂二进制,也就是那一堆0和1。把十进制小数转成二进制,用的是“乘2取整”法。以 0.1 为例:


自制

看出来了吗?0.1 的二进制是无限循环的:0.00011001100110011……(0011 循环)。

同样,0.2 的二进制也是无限循环:0.0011001100110011……(0011 循环)。

看不出来也不要紧,我们只要记住:我们十进制世界里大部分稀松平常的小数,二进制都是无法精准表达的。

0.1 和 0.2在二进制世界里,就是“无限循环小数”,也就如同十进制无法精确表示 1/3 一样。

除了0.1和0.2以外,π、√2等数学上的无理数(无限不循环小数),二进制下更是超纲了,计算机同样也是无法精确表示的。

弄懂了这个概念,我们再来看计算机的存储法则。

我们现在主流的编程语言,通用的存储法基本都是“IEEE 754浮点数标准”,只要是使用了这个存储标准的语言,比如JavaScript、C/C++、Java、以及曾号称人人都应该掌握的Python等等,都是无法准确计算出“0.1+0.2=0.3”的。


自制

IEEE 754是由电气与电子工程师协会(IEEE)于1985年制定的浮点运算技术标准。

在这部“数字宪法”制定之前,各大计算机厂家都有自己的浮点数存储法则,你不兼容我的,我不care你的,主打一个各论各的,造成了很多混乱。

IEEE 754标准就规定了浮点数在计算机中的存储格式,常见的有32位单精度和64位双精度。每个数被拆分为符号位、指数位和尾数位三部分,尾数位长度是固定的(如双精度为52位),那么遇到无限循环或者无限不循环小数的时候,怎么办?那就是把尾数“一剪没”了。

这样截断或舍入,就给0.1和0.2造成了存储误差。两个近似值相加,误差累积,就导致了0.1+0.2≠0.3的现象。


梅开二度、二度返场|《夏洛特烦恼》

你可能又得问:浮点数存储为啥非得把尾数截了?计算机这么牛,全存了不行吗?

答案很简单:不是不想,是做不到。

很多人以为计算机存储和计算都是绝对精确的,其实这是个误解。

存整数确实可以——比如数字 42,转成二进制 101010,放进固定大小的空间里,只要空间够大(不溢出),拿出来还是 42,分毫不差。就像把鸡蛋放进仓库,拿出来还是那个鸡蛋。

但问题是,数学世界里的数远不止如此。无限循环和无限不循环的数,远远多于整数。

计算机的存储空间是有限的,无论用多少位,都装不下一个无限长的二进制串。所以,它只能截取前几十位,后面的直接扔掉。

你可能又会想:那能不能把空间做得再大点,存更多位?从几十位变成几百位也行啊!

理论上可以,但实际意义不大。

对绝大多数工程、图形、科学计算来说,“IEEE 754浮点数存储法”所用的 64 位双精度(约 15-17 位有效数字)已经足够精确。


对不同领域来说,计算精度要求是不同的,天文学家能算准光年就很牛了|网络



如设计飞机、渲染电影、模拟天气,没人需要知道 π 的第10000位是什么(当然,π能不能算到最后一位,在数学上意义重大,可能意味着数学大厦的地基比如微积分、极限理论被动摇)。况且,无理数有无穷多个,再大的空间也装不完。

所以计算机选择了一种“务实”的策略:用有限的存储,近似地表示所有的实数。专业的相关学科就叫做计算机数值分析,研究的就是“近似”的艺术。

对于任何一个数值计算问题,数值分析都会追问:误差有多大?算法快不快?结果稳不稳?能不能算出来?只要这四个问题都能给出满意的答案,那就是合格的计算结果。

回到 0.1 + 0.2。这不是程序的 bug,而是二进制与有限存储共同作用的必然结果。

理解这个“误差”,就是数值分析教给我们的最重要一课:

认识误差,理解误差,最终学会与误差共存,并控制它。

‍‍‍‍

参考资料:

[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

原创文章版权归微信公众号
“把科学带回家”所有

转载请联系:bd@wanwuweb.com

凡本公众号转载、引用的文章 、图片、音频、视频文件等资料的版权归版权所有人所有,因此产生相关后果,由版权所有人、原始发布者和内容提供者承担,如有侵权请联系删除。

‍‍

▲ 关注我们,点亮在看,分享一下‍

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

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.

相关推荐
热点推荐
神级躺赢!索汉提前锁定NBA总冠军戒指 本季先后效力马刺尼克斯

神级躺赢!索汉提前锁定NBA总冠军戒指 本季先后效力马刺尼克斯

醉卧浮生
2026-06-01 05:45:13
天空:拉什福德正在迈阿密国际训练基地训练,这里设施顶尖

天空:拉什福德正在迈阿密国际训练基地训练,这里设施顶尖

懂球帝
2026-06-01 23:45:07
亏光1亿后67亿“卖掉”公司,小杨哥这次能成功翻身吗?

亏光1亿后67亿“卖掉”公司,小杨哥这次能成功翻身吗?

青眼财经
2026-06-01 10:37:30
2026,人类第一次面对“高温围城”:这一次,谁先撑不住?

2026,人类第一次面对“高温围城”:这一次,谁先撑不住?

李砍柴
2026-06-01 16:18:39
演员王星军:与关牧村离婚34年,65岁未再婚,他到底追求什么?

演员王星军:与关牧村离婚34年,65岁未再婚,他到底追求什么?

飘飘然的娱乐汇
2026-06-01 19:15:05
中央明确了!社保最低缴费年限要提高,70、80后得早做准备

中央明确了!社保最低缴费年限要提高,70、80后得早做准备

云鹏叙事
2026-04-12 16:36:39
洛夫顿又回上海了!球迷偶遇独自一人吃外卖,估计是治疗去的?

洛夫顿又回上海了!球迷偶遇独自一人吃外卖,估计是治疗去的?

篮球资讯达人
2026-06-01 20:27:06
中际旭创,成沪深300指数第一大权重股

中际旭创,成沪深300指数第一大权重股

证券时报
2026-06-01 22:51:04
1996年,他与董建华竞选特首失败,没想到,却成了香港头号包租公

1996年,他与董建华竞选特首失败,没想到,却成了香港头号包租公

鉴史录
2026-06-01 12:59:01
38天首球!1.5亿欧巨星复活:40米奔袭一条龙破门 绝美弧线太霸道

38天首球!1.5亿欧巨星复活:40米奔袭一条龙破门 绝美弧线太霸道

风过乡
2026-06-02 06:10:00
石家庄市第十五届人民代表大会常务委员会公告

石家庄市第十五届人民代表大会常务委员会公告

环球网资讯
2026-06-01 22:19:05
足坛一夜动态:挪威击败瑞典,土耳其4球大胜,奥地利1-0突尼斯

足坛一夜动态:挪威击败瑞典,土耳其4球大胜,奥地利1-0突尼斯

足球狗说
2026-06-02 04:44:59
百万网红边牧被卖后续!母亲崩溃怒斥,当事人放话,收狗人曝内情

百万网红边牧被卖后续!母亲崩溃怒斥,当事人放话,收狗人曝内情

奇思妙想草叶君
2026-05-30 22:22:07
国产新伟哥上市!舌下含服15分钟起效,不伤血管,中老年男性适用

国产新伟哥上市!舌下含服15分钟起效,不伤血管,中老年男性适用

思思夜话
2026-06-01 15:24:26
毛主席派宋时轮给刘志丹当助手,宋吐苦水:我已被开除党籍一年了

毛主席派宋时轮给刘志丹当助手,宋吐苦水:我已被开除党籍一年了

我不是沃神
2026-06-02 08:10:03
苹果眼镜要掀翻两千亿美元眼镜市场?套路跟手表一样

苹果眼镜要掀翻两千亿美元眼镜市场?套路跟手表一样

薛定谔的BUG
2026-06-01 20:16:02
雷霆出局侧证詹皇伟大!美媒晒4点为LBJ写赞歌:八连总决轻松吗?

雷霆出局侧证詹皇伟大!美媒晒4点为LBJ写赞歌:八连总决轻松吗?

颜小白的篮球梦
2026-06-01 23:01:37
32岁白举纲喜为人父,1岁女儿白胖可爱,妻子非圈内人

32岁白举纲喜为人父,1岁女儿白胖可爱,妻子非圈内人

书慧我心
2026-06-01 14:13:33
下个沪电股份?这家11元低价+高端PCB铜箔龙头   主力暴抢16亿元

下个沪电股份?这家11元低价+高端PCB铜箔龙头 主力暴抢16亿元

元芳说投资
2026-06-02 00:00:09
伊劳拉即将执教利物浦 同时获得一个超强辅助!

伊劳拉即将执教利物浦 同时获得一个超强辅助!

小彭美识
2026-06-02 07:47:07
2026-06-02 09:00:49
万物杂志
万物杂志
面向未来的科学教育
3338文章数 103939关注度
往期回顾 全部

科技要闻

英伟达RTX Spark 很猛,但首批机型不便宜

头条要闻

牛弹琴:伊朗突然发飙 特朗普急了被迫打了一个电话

头条要闻

牛弹琴:伊朗突然发飙 特朗普急了被迫打了一个电话

体育要闻

杰威:如果我没受伤,我们能击败马刺

娱乐要闻

奚梦瑶婚礼现场图!一双儿女当花童

财经要闻

宇树过会,杭州赢麻了

汽车要闻

奇瑞集团5月销量24.8万辆 同比增长20.5% 出口18.2万辆再创新高

态度原创

教育
本地
艺术
亲子
公开课

教育要闻

高考倒计时!合肥名师天团“划重点”。最后几天做好这几件事,考场上直接多拿分!

本地新闻

用剪纸的方式,打开江苏扬州

艺术要闻

周杰伦花 1.36 亿拍下的这幅画

亲子要闻

国家卫生健康委:我国儿童健康水平持续提升……一起来听健康早闻!2026年6月2日

公开课

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

无障碍浏览 进入关怀版