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

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

bug表现:

image

复现代码:
let a1= 3.335
a1.toFixed(2)
// "3.33"
期望:

结果应该是3.34

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

阅读 4k
3 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题