这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
下面小编就为大家带来一篇 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 数字舍入误差以及解决方法 (必看篇) 就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 phperz。
来源: http://www.phperz.com/article/17/0702/327237.html