ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js toFixed()方法的坑

2019-04-14 15:49:44  阅读:288  来源: 互联网

标签:舍入 六入 正确 js toFixed 方法 四舍 银行家


javascript中toFixed使用的是银行家舍入规则。

银行家舍入:所谓银行家舍入法,其实质是一种四舍六入五取偶(又称四舍六入五留双)法。

简单来说就是:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。但是不论引入toFixed解决浮点数计算精度缺失的问题也好,它有没有使用银行家舍入法也罢,都是为了解决精度的问题,但是又离不开二进制浮点数的环境,但至少他帮助我们找到了问题所在,从而让我们有解决方法。

 

一:四舍五入并不是真正的四舍五入

 

这个问题是在测试阶段我们的测试人员提出来的。一开始我也很吃惊,结果待我在控制台试了一些数据之后,我懵逼了,我一直在用的toFixed方法竟然有问题

 

chrome上的测试结果:

 

 

 

1.35.toFixed(1) // 1.4 正确

 

1.335.toFixed(2) // 1.33 错误

 

1.3335.toFixed(3) // 1.333 错误

 

1.33335.toFixed(4) // 1.3334 正确

 

1.333335.toFixed(5)  // 1.33333 错误

 

1.3333335.toFixed(6) // 1.333333 错误

 

IE上的测试结果:

 

1.35.toFixed(1) // 1.4 正确

 

1.335.toFixed(2) // 1.34  正确

 

1.3335.toFixed(3) // 1.334 正确

 

1.33335.toFixed(4) // 1.3334 正确

 

1.333335.toFixed(5)  // 1.33334 正确

 

1.3333335.toFixed(6) // 1.333334 正确

我个人的解决方法numFormat 为千分位方法

 

numFormat(Math.round(money*100/100).toFixed(2))

 

标签:舍入,六入,正确,js,toFixed,方法,四舍,银行家
来源: https://www.cnblogs.com/zazahao/p/10705411.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有