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

谷歌工程师吐槽:0.1+0.2≠0.3,这bug藏了50年没人管

0
分享至


「0.1加0.2等于0.30000000000000004。」这不是某个实习生写的烂代码,是IEEE 754浮点标准(二进制浮点数算术标准)在JavaScript、Python、Java里跑了半个世纪的"正确"结果。

一位谷歌工程师最近在技术博客复盘分数运算时,把这个问题重新拽回开发者视野。他说得很直接:浮点数的精度陷阱,本质上是我们用十进制的大脑去猜二进制的心思,猜错了。

1960年代的遗产:为什么0.1在电脑里是无限循环小数

故事要从1960年代说起。当时计算机科学家面临一个选择:用二进制表示小数,还是用十进制?二进制赢了,因为硬件实现更快、更省硅片。

但代价是隐形的。十进制的0.1,换成二进制是0.0001100110011...无限循环。IEEE 754标准只能存64位,剩下的尾巴被砍掉。单次误差小到10^-16级别,但叠加几千次,财务系统里的 penny 就开始莫名其妙消失。

2008年,欧洲航天局阿丽亚娜5号火箭发射37秒后自毁,2亿美元炸成烟花。事后调查发现,一个64位浮点数被塞进16位整数,溢出报错。导航系统判定"出错了",触发自毁程序。这不是分数运算的锅,但属于同一类问题:人类以为"差不多就行",机器较真起来要命。

分数运算的古老规则,恰恰能避开这个坑。1/3加1/3加1/3,浮点数给你0.999999...,分数直接等于1。没有近似,没有累积误差。

分数运算的三条铁律:为什么通分比乘法更烧脑

加减法最折腾。3/7加5/11,你不能直接分子加分子、分母加分母。必须先找公分母,把两块不同大小的"披萨切片"切成同样大小。

最笨的办法:7乘11得77,分子变成33加35,结果68/77。但4/6加1/4,分母直接相乘得24,其实最小公倍数(LCD)是12。用LCD计算,中间数字更小,溢出风险更低。

乘法反而最简单。分子乘分子,分母乘分母,3/7乘5/11直接得15/77。除法就是乘以倒数,把第二个分数上下翻转。


每次运算完必须约分。24/36的最大公约数(GCD)是12,约成2/3。谷歌工程师在博客里贴了一段欧几里得算法的JavaScript实现,十行代码,跑了两千年。

带分数是人类的妥协,假分数是机器的母语。2又3/4写成11/4,运算时少一层转换。输出时再换回带分数,用户看着舒服。

现代编程语言的分裂:谁还在用分数算钱

Python有fractions模块,Java有BigDecimal,C#用decimal类型。这些都不是默认选项,得开发者主动想起来用。

金融领域早就学乖了。彭博终端、交易所核心系统,要么用定点数(fixed-point),要么直接用整数存"分"而不是"元"。1.23美元存成123,彻底避开浮点。

但科学计算和图形渲染不一样。物理模拟要速度,GPU用FP16、FP32满天飞。误差?每帧重新算,上一帧的偏差不累积。游戏画面抖动一帧,玩家看不出来;银行账户少一分钱,客服电话被打爆。

谷歌工程师的观察是:分数运算在"需要精确"和"需要速度"的夹缝里存活。有理数库(rational number library)存在,但调用成本比原生浮点高一个数量级。大多数开发者选择"先跑起来,精度问题以后再说"——然后永远没以后。

一个木工师傅的启示:为什么手工测量比CAD更准

文章结尾,作者讲了一个场景。木工做柜子,CAD图纸标了0.3333英尺,师傅直接拿尺子找1/3标记。十进制是给人看的,分数是给活干的。

编程同理。0.1+0.2的笑话流传二十年,不是没人想修,是修的成本比忍的成本更高。IEEE 754已成硬件标准,全世界CPU都认。要改?等于让所有人换一把尺子。

但分数运算的知识没有过时。2023年Stack Overflow调研显示,"浮点数精度问题"仍是开发者搜索的前50话题之一,年搜索量超47万次。每个搜这个问题的人,都在重新发现1960年代那个被砍掉的无限循环尾巴。

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

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.

相关推荐
热点推荐
最大的台独分子,再也藏不住尾巴,终于露出来了肮脏的脑袋!

最大的台独分子,再也藏不住尾巴,终于露出来了肮脏的脑袋!

南权先生
2026-03-25 15:29:51
有些话真的不能乱说,有些事真的不能乱做!网友:‬这是预言啊

有些话真的不能乱说,有些事真的不能乱做!网友:‬这是预言啊

另子维爱读史
2026-03-18 20:37:08
广州又一家广式酒家宣布闭店,为啥老广最爱的平价茶楼一家家消失

广州又一家广式酒家宣布闭店,为啥老广最爱的平价茶楼一家家消失

奇思妙想生活家
2026-03-26 00:19:15
欧洲是如何悄然介入美伊战争的

欧洲是如何悄然介入美伊战争的

澎湃新闻
2026-03-24 20:54:04
新消息!伊朗突然宣布了!

新消息!伊朗突然宣布了!

达文西看世界
2026-03-23 20:29:16
说刘亦菲美被放大的,看看她和中华小姐冠军同框就懂了

说刘亦菲美被放大的,看看她和中华小姐冠军同框就懂了

手工制作阿歼
2026-03-25 11:36:59
这些“垃圾花”也该被315曝光,别再坑害花友了,白送都不能要

这些“垃圾花”也该被315曝光,别再坑害花友了,白送都不能要

三农老历
2026-03-20 00:32:02
太离谱!意大利公投年轻选民投票率飙升,67%反对票重创总理

太离谱!意大利公投年轻选民投票率飙升,67%反对票重创总理

冷眼看尽世间繁华
2026-03-25 14:08:07
丧心病狂!河南14岁少年被虐死案:死时穿纸尿裤,胃里空无一物

丧心病狂!河南14岁少年被虐死案:死时穿纸尿裤,胃里空无一物

春日在捕月
2026-03-25 01:00:23
王毅判断没错,短短三天中方见识了:比利时的虚伪、西班牙的真诚

王毅判断没错,短短三天中方见识了:比利时的虚伪、西班牙的真诚

墨印斋
2026-03-26 01:52:13
泪目!张雪峰与001号员工万霞:从3500月薪到不离不弃看哭无数人

泪目!张雪峰与001号员工万霞:从3500月薪到不离不弃看哭无数人

喜欢历史的阿繁
2026-03-25 20:44:01
甘油三酯"祸首"被发现,是猪油的12倍?专家叹息:还有人天天在吃

甘油三酯"祸首"被发现,是猪油的12倍?专家叹息:还有人天天在吃

芳芳历史烩
2026-03-23 11:04:46
既然给脸不要脸,那就彻底撕破脸!王毅外长已经把话挑明了

既然给脸不要脸,那就彻底撕破脸!王毅外长已经把话挑明了

安安说
2026-02-01 14:01:51
7部旧手机换回一台iPhone11!废旧手机回收市场突然火了,存储芯片短缺推高回收价,压箱底的“电子垃圾”成了香饽饽

7部旧手机换回一台iPhone11!废旧手机回收市场突然火了,存储芯片短缺推高回收价,压箱底的“电子垃圾”成了香饽饽

观威海
2026-03-25 10:51:03
神坛彻底崩塌!李莉被中情局盯上的谎言,该彻底戳穿了

神坛彻底崩塌!李莉被中情局盯上的谎言,该彻底戳穿了

老马拉车莫少装
2026-03-01 17:23:52
51岁男子突发心梗猝死!不想得心梗,牢记晚饭4不吃,睡前4不要!

51岁男子突发心梗猝死!不想得心梗,牢记晚饭4不吃,睡前4不要!

健康之光
2026-03-20 17:05:06
别再喊王思雨老婆了!看她的择偶标准,真给你机会,你能达标吗?

别再喊王思雨老婆了!看她的择偶标准,真给你机会,你能达标吗?

萌兰聊个球
2026-03-25 10:11:51
喂流浪猫被邻居害死后续:凶手拒认错,事后叫嚣,家属行为更恶心

喂流浪猫被邻居害死后续:凶手拒认错,事后叫嚣,家属行为更恶心

阿腩讲娱乐
2026-03-26 01:22:38
从钢铁防线到进攻獠牙!安东尼奥的U23国足,正在撕掉标签

从钢铁防线到进攻獠牙!安东尼奥的U23国足,正在撕掉标签

曹老师评球
2026-03-25 21:54:07
世界杯名单有变!国乒王牌退赛,温瑞博大黑马,王楚钦情况有变!

世界杯名单有变!国乒王牌退赛,温瑞博大黑马,王楚钦情况有变!

曹说体育
2026-03-25 11:00:43
2026-03-26 04:00:49
摸鱼算法
摸鱼算法
致力于用最前沿的AI技术,换取更多发呆时间的三十岁青年。
42文章数 0关注度
往期回顾 全部

科技要闻

红极一时却草草收场,Sora宣布正式关停

头条要闻

伊朗:正在搜捕逃亡美军

头条要闻

伊朗:正在搜捕逃亡美军

体育要闻

35岁替补门将,凭什么入选英格兰队?

娱乐要闻

张雪峰遗产分割复杂!是否立遗嘱成关键

财经要闻

管涛:中东局势如何影响人民币汇率走势?

汽车要闻

智己LS8放大招 30万内8系旗舰+全线控底盘秀实力

态度原创

旅游
数码
房产
公开课
军事航空

旅游要闻

“女王驾到” 上海温室花园高山杜鹃展开幕,中外游客打卡点赞,Beautiful!Amazing!Fantastic!

数码要闻

英特尔发布基于第三代酷睿Ultra处理器vPro平台

房产要闻

41亿!259亩!建学校…三亚这个大城更,最新方案曝光!

公开课

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

军事要闻

伊朗重申非交战国家船只可安全通过霍尔木兹海峡

无障碍浏览 进入关怀版