脚本宝典收集整理的这篇文章主要介绍了js解决0.1+0.2==0.3的问题的几种方法,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
js解决0.1+0.2==0.3的问题的几种方法
JavaScript有7种基本类型分别是: Undefined, Null, Boolean, String, Number, Symbol, Object.
对于JS中的Number类型, 不区分整数和浮点数, 浮点数的精度远远不如整数, 首先先看一下为什么会出现这个问题, 根据双精度浮点数的定义, Number类型的有效整数范围是-0XFFFFFFFFFFF至0X1FFFFFFFFFF,所以无法精确到超过这个范围的整数.
解决办法
1.ES6提供的Number.EPSILON方法
function numbersequal(a,b){ return Math.abs(a-b)<Number.EPSILON;
}
VAR a=0.1+0.2, b=0.3;
console.LOG(numbersequal(a,b)); //true
@H_360_48@
考虑兼容性的问题了,在chrome中支持这个属性,但是IE并不支持(笔者的版本是IE10不兼容),所以我们还要解决IE的不兼容问题。
Number.EPSILON=(function(){ //解决兼容性问题
return Number.EPSILON?Number.EPSILON:Math.pow(2,-52);
})();
//上面是一个自调用函数,当JS文件刚加载到内存中,就会去判断并返回一个结果,相比if(!Number.EPSILON){
// Number.EPSILON=Math.pow(2,-52);
//}这种代码更节约性能,也更美观。
function numbersequal(a,b){
return Math.abs(a-b)<Number.EPSILON;
}
//接下来再判断
var a=0.1+0.2, b=0.3;
console.log(numbersequal(a,b)); //这里就为true了
2.把计算数字 提升 10 的N次方 倍 再 除以 10的N次方。N>1.
(0.1*1000+0.2*1000)/1000==0.3
//true
以上是脚本宝典为你收集整理的js解决0.1+0.2==0.3的问题的几种方法全部内容,希望文章能够帮你解决js解决0.1+0.2==0.3的问题的几种方法所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。