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

为啥计算机算不出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.

相关推荐
热点推荐
界面调查|一位“90后”网约车司机之死:被骗网贷、被催债和致命的绝望

界面调查|一位“90后”网约车司机之死:被骗网贷、被催债和致命的绝望

界面新闻
2026-03-29 10:33:24
沈南谈张雪峰葬礼:最初大家都克制小声哭,张母大哭全场都放声哭

沈南谈张雪峰葬礼:最初大家都克制小声哭,张母大哭全场都放声哭

喜欢历史的阿繁
2026-03-29 18:56:46
邵佳一规定:不得外出购物,此前国足0-7输日本还大包小包买特产

邵佳一规定:不得外出购物,此前国足0-7输日本还大包小包买特产

茜子足球
2026-03-29 14:58:56
香港新规:拒绝解锁手机判1年,3类人群最危险

香港新规:拒绝解锁手机判1年,3类人群最危险

全栈遛狗员
2026-03-28 11:45:59
上海还好签了白边!王哲林状态断崖式下滑,洛夫顿隐患太大了!

上海还好签了白边!王哲林状态断崖式下滑,洛夫顿隐患太大了!

篮球资讯达人
2026-03-29 22:51:11
伊朗发动“真实承诺-4”行动第86波攻势

伊朗发动“真实承诺-4”行动第86波攻势

新华社
2026-03-29 19:57:05
深圳双杀吉林豪取7连胜升第四 贺希宁22+4+5王浩然23+5+4

深圳双杀吉林豪取7连胜升第四 贺希宁22+4+5王浩然23+5+4

醉卧浮生
2026-03-29 21:10:25
唯独缺少杨瀚森!混音队季后赛庆海报引争议,球迷怒斥区别对待!

唯独缺少杨瀚森!混音队季后赛庆海报引争议,球迷怒斥区别对待!

田先生篮球
2026-03-29 16:41:11
内存条崩了,囤货大户疯狂抛售,把内存条当理财的人,全砸手里了

内存条崩了,囤货大户疯狂抛售,把内存条当理财的人,全砸手里了

离离言几许
2026-03-29 18:46:33
郭麒麟、刘昊然,严浩翔,被曝疑组团去商K聚会,本人火速回应

郭麒麟、刘昊然,严浩翔,被曝疑组团去商K聚会,本人火速回应

兴史兴谈
2026-03-28 22:53:56
跌得最惨的五大专业:从热门王牌到天坑,名校光环都不管用!

跌得最惨的五大专业:从热门王牌到天坑,名校光环都不管用!

黯泉
2026-03-29 21:20:42
16岁已是人间尤物,4年换20个男人,找到老实人接盘后收心做人妻

16岁已是人间尤物,4年换20个男人,找到老实人接盘后收心做人妻

兴史兴谈
2026-03-29 00:00:24
何润东15年前谈项羽的采访火了,他的侃侃而谈,够小鲜肉学一辈子

何润东15年前谈项羽的采访火了,他的侃侃而谈,够小鲜肉学一辈子

大铁猫娱乐
2026-03-27 14:20:03
张雪峰41岁离世!他没有离婚,寡母晚年该何去何从?

张雪峰41岁离世!他没有离婚,寡母晚年该何去何从?

细品名人
2026-03-29 07:44:57
重庆某设计院员工带头罢工被辞退,辞退员工把领导眼镜打飞了!

重庆某设计院员工带头罢工被辞退,辞退员工把领导眼镜打飞了!

黯泉
2026-03-29 20:11:11
印度蔬菜为何不被认可?蛇瓜亩产达5吨,几十年来一直发展不起来

印度蔬菜为何不被认可?蛇瓜亩产达5吨,几十年来一直发展不起来

西楼知趣杂谈
2026-03-15 07:31:47
演员李尚宝去世终年45岁,曾患抑郁症街头狂奔精神异常,公司回应

演员李尚宝去世终年45岁,曾患抑郁症街头狂奔精神异常,公司回应

韩小娱
2026-03-28 13:31:17
美军3500名增援到达!以色列袭杀记者!伊朗:击中美军F-16战斗机,强力反击将加速以政权崩溃

美军3500名增援到达!以色列袭杀记者!伊朗:击中美军F-16战斗机,强力反击将加速以政权崩溃

每日经济新闻
2026-03-29 00:39:10
一定要大量读书:建议读完这5本书,再去处理复杂的人际关系

一定要大量读书:建议读完这5本书,再去处理复杂的人际关系

欣辰读书
2026-03-25 23:00:41
油车换电车1年真实感受:普通人别跟风!买车前没人告诉你的真相

油车换电车1年真实感受:普通人别跟风!买车前没人告诉你的真相

华庭讲美食
2026-03-28 17:08:13
2026-03-29 23:52:49
万物杂志
万物杂志
面向未来的科学教育
3270文章数 103912关注度
往期回顾 全部

科技要闻

马斯克承认xAI"建错了",11位创始人均离职

头条要闻

中国警告美国:勿将"冲突战乱"引入亚太地区

头条要闻

中国警告美国:勿将"冲突战乱"引入亚太地区

体育要闻

绝杀卫冕冠军后,他单手指天把胜利献给父亲

娱乐要闻

汪峰定律再现!李荣浩喊话单依纯侵权

财经要闻

Kimi、Minimax 们的算力荒

汽车要闻

岚图泰山X8配置曝光 四激光雷达/华为新一代座舱

态度原创

房产
手机
数码
公开课
军事航空

房产要闻

首日430组来访,单日120组认筹!海口首个真四代,彻底爆了!

手机要闻

苹果重返第一,华为微弱差距屈居第二,OPPO稳居第三!

数码要闻

仅花48元!成功捡漏64GB DDR5内存:血赚好几千

公开课

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

军事要闻

美两栖攻击舰载3500名增援到达

无障碍浏览 进入关怀版