Number.prototype.toFixed() 四舍五入出现bug

toFixed 定义:toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。

bug表现:

复现代码:

let a1= 3.335

a1.toFixed(2)

// "3.33"

期望:

结果应该是3.34

这是为什么???
mozilla toFixed解释

回答

toFixed 是银行家进位法,不是四舍五入。什么叫银行家进位法,你可以自己搜索一下。

JS 没提供内置的四舍五入方法,可以利用 Math.round 自己实现一个。

下面是一个参考例子:

// Javascript 源码
https://github.com/fudiwei/st...
// Typescript 声明
https://github.com/fudiwei/st...

image.png

浮点数不能精确表示。

(3.335).toFixed(20)

"3.33499999999999996447"

Math.round(3.335*100) / 100

以上是 Number.prototype.toFixed() 四舍五入出现bug 的全部内容, 来源链接: utcz.com/a/37350.html

回到顶部