-
我用 JavaScript 算钱,0.1 加 0.2 居然不等于 0.3,算出来的金额总是差那么一点点,我对着这串诡异的小数尾巴排查了大半天的深度复盘
我做金额计算,加加减减算总价,结果总带条诡异的小数尾巴:0.1+0.2 算出来是 0.30000000000000004、和 0.3 比较还返回 false,误差累积导致显示和对账总差一两分钱。我简直不敢信计算机连加法都算错。深究才懂这不是 JS 的 bug、而是几乎所有语言共有的浮点(IEEE 754)局限:计算机用二进制,而 0.1 换成二进制是无限循环小数(像十进制 1/3 除不尽),尾数位…- 0
- 0
-
对账总差一分钱:JavaScript 浮点精度避坑复盘
这个 bug 是被财务同事追着问出来的。她说我们的对账系统总价偶尔会和实际差那么一两分钱,金额不大但财务的账差一分钱都不能容忍。我起初以为是某条数据错了,可翻来覆去查数据每一笔单价数量都对得上,加起来却就是会差一点点。我把计算过程一步步打印出来,终于看到了那个让无数程序员会心一笑又头皮发麻的经典场景:在控制台里敲下 0.1 + 0.2,得到的不是 0.3 而是一个诡异的 0.30000000000…- 0
- 0
IEEE754
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!


