js 保留两位小数 与 四舍五入
Math.round()方法 是 JavaScript 中用于将数字四舍五入到最接近整数的函数,小数部分≥0.5 时向上取整,<0.5 时向下取整,负数遇 0.5 向零方向舍入。
(2.005).toFixed(2) // '2.00', 应该是 2.01 才对 (1.45).toFixed(1) // '1.4'
toFixed用的是银行家算法:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。
JavaScript的Number类型为双精度IEEE 754 64位浮点类型。IEEE 单精度格式具有 24 位有效数字精度,并总共占用 32 位。 IEEE 双精度格式具有 53 位有效数字精度,并总共占用 64 位。
如果一个数52位存储空间不够,也就是二进制也会出现想十进制一样的无限数的时候,会发生什么事情呢?
IEEE754采用的浮点数舍入规则有时被称为 舍入到偶数(Round to Even)。这有点像我们熟悉的十进制的四舍五入,即不足一半则舍,一半以上(包括一半)则进。 不过对于二进制浮点数而言,还多一条规矩,就是当需要舍入的值刚好是一半时,不是简单地进, 而是在前后两个等距接近的可保存的值中,取其中最后一位有效数字为零者。也就是这个规则,带来的精度问题。
keepTwoDecimal (num) { const result = Math.round((num * 100).toFixed(2)) / 100 return result }

浙公网安备 33010602011771号