Number.prototype.toFixed() 四舍五入出现bug
toFixed 定义:toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。
bug表现:
复现代码:
let a1= 3.335a1.toFixed(2)
// "3.33"
期望:
结果应该是3.34
这是为什么???
mozilla toFixed解释
回答
toFixed
是银行家进位法,不是四舍五入。什么叫银行家进位法,你可以自己搜索一下。
JS 没提供内置的四舍五入方法,可以利用 Math.round
自己实现一个。
下面是一个参考例子:
// Javascript 源码
https://github.com/fudiwei/st...
// Typescript 声明
https://github.com/fudiwei/st...
浮点数不能精确表示。
(3.335).toFixed(20)"3.33499999999999996447"
Math.round(3.335*100) / 100
以上是 Number.prototype.toFixed() 四舍五入出现bug 的全部内容, 来源链接: utcz.com/a/37350.html