%百分比实验室

四舍五入、截尾、进位与 0.1 + 0.2 问题 — 计算器尾数处理全解

讲解四舍五入、截尾(舍去)、进位的区别,金额尾数处理,银行家舍入法,计算机中 0.1 + 0.2 为何等于 0.30000000000000004,以及本计算器的处理方式。

在计算器中试一试 →

百分比计算中除法和小数乘法很多,大多数情况下末位都除不尽。即使是同一个计算,尾数怎么处理也会让结果相差几元或几分,了解这些规则就能解释收据和报价单之间的差异。

三种尾数处理

还可以改变单位。12,345 元按 10 元截尾是 12,340 元,按 100 元四舍五入是 12,300 元。

各自用在哪里

负数的尾数

−2.5 四舍五入是 −3 还是 −2?本计算器按远离 0 的方向舍入,处理为 −3。截尾朝 0 的方向(−1.239 → −1.23),进位朝远离 0 的方向。无论金额正负,都对其大小(绝对值)适用同样的规则。

银行家舍入法

恰好为一半(…5)时向偶数方向舍入(2.5 → 2,3.5 → 4)。为了减少大量反复舍入时向一侧累积的误差,部分会计和编程环境会使用这种方法。日常计算和本计算器使用普通的四舍五入。

为什么计算机中 0.1 + 0.2 等于 0.30000000000000004

计算机以二进制存储数字。就像十进制中的 1/3 会成为无限循环的 0.333…,0.1 在二进制中也是无限小数,无法精确存储,只能舍入为非常接近的值后存储。因此在包括 JavaScript 在内的大多数语言中,计算 0.1 + 0.2 会得到 0.30000000000000004。

同理,把 1.005 四舍五入到小数点后两位的常见方法(toFixed(2))返回的是 1.00 而不是 1.01。因为 1.005 实际上被存储为 1.00499999…。

本计算器的处理方式

显示位数与实际值

页面上方的小数位数设置只改变结果显示的位数。1 ÷ 3 × 100 在内部是 33.3333333333,设为 2 位小数时显示为 33.33。复制按钮复制的是屏幕上显示的值。

小结

尾数处理规则不同导致结果相差几元,这不是错误,而是规则的差异。金额对不上时,请先确认 ① 在哪一步处理了尾数 ② 采用的单位和方式是什么。

在计算器中试一试 →