问答

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

作者:admin 2021-06-08 我要评论

toFixed 定义:toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。 bug表现: 复现代码: let a1= 3.335a1.toFixed(2)// "3.33" 期望: 结果应该是3.34 ...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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

bug表现:

image

复现代码:
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

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • Eventloop 是什么?是为了解决什么问题

    Eventloop 是什么?是为了解决什么问题

  • 关于JS中的闭包,求解答

    关于JS中的闭包,求解答

  • 有没有通过韵母查汉字的api?

    有没有通过韵母查汉字的api?

  • 假设接收方一直不从接收缓冲区读数据,

    假设接收方一直不从接收缓冲区读数据,

腾讯云代理商
海外云服务器