这篇文章将为大家详细讲解有关如何解决js数字舍入误差的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
1、起因:
返回结果是true。
2、原因:计算机的二进制实现和位数限制有些数无法有限表示。就像一些无理数不能有限表示,如 圆周率 3.1415926...,1.3333... 等。JS 遵循 IEEE 754 规范,采用双精度存储(double precision),占用 64 bit。
3、解决方法
(1)toFixed(),存在兼容性(chrome)
(2)比较稳妥方法(数字如果过大,也会有误差):
*JS 中能精准表示的最大整数是 Math.pow(2, 53),十进制即 9007199254740992。 大于 9007199254740992 的可能会丢失精度
function round(num,d){ //Step1:将num放大10的d次方倍 num*=Math.pow(10,d); //Step2:对num四舍五入取整 num = Math.round(num); //Step:返回num缩小10的d次方倍,获得最终结果 return num/Math.round(10,d); } console.log(round(123.456)); //123.46
关于“如何解决js数字舍入误差的问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。