资讯专栏INFORMATION COLUMN

js解决0.1+0.2==0.3的问题的几种方法

3fuyu / 3419人阅读

摘要:解决兼容性问题上面是一个自调用函数,当文件刚加载到内存中,就会去判断并返回一个结果,相比这种代码更节约性能,也更美观。接下来再判断这里就为了把计算数字提升的次方倍再除以的次方。

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)

考虑兼容性的问题了,在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)

2.把计算数字 提升 10 的N次方 倍 再 除以 10的N次方。N>1.

(0.1*1000+0.2*1000)/1000==0.3
//true

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/101932.html

相关文章

  • 如何解决0.1 +0.2===0.30000000000000004类问题

    摘要:方法使用定点表示法来格式化一个数,会对结果进行四舍五入。该数值在必要时进行四舍五入,另外在必要时会用来填充小数部分,以便小数部分有指定的位数。如果数值大于,该方法会简单调用并返回一个指数记数法格式的字符串。在环境中,只能是之间,测试版本为。 showImg(https://segmentfault.com/img/remote/1460000011913134?w=768&h=521)...

    yuanzhanghu 评论0 收藏0
  • JS中如何理解浮点数?

    摘要:本文通过介绍的二进制存储标准来理解浮点数运算精度问题,和理解对象的等属性值是如何取值的,最后介绍了一些常用的浮点数精度运算解决方案。浮点数精度运算解决方案关于浮点数运算精度丢失的问题,不同场景可以有不同的解决方案。 本文由云+社区发表 相信大家在平常的 JavaScript 开发中,都有遇到过浮点数运算精度误差的问题,比如 console.log(0.1+0.2===0.3)// fa...

    bang590 评论0 收藏0
  • 从一个 bug 看 javascript 精度丢失问题

    摘要:就像一些无理数不能有限表示,如圆周率,等。遵循规范,采用双精度存储,占用。参考中不会失去精度的最大值数字精度丢失的一些典型问题 问题描述 后端返回 { spaceObject: { objectId: 1049564069045993472 } } 前端模版,使用的是 atpl 模版 前端获取 objectId 的方式,const objectId = $(#test).da...

    NusterCache 评论0 收藏0
  • javascript中0.1 + 0.2 != 0.3?

    摘要:按照的数字格式,整数有的范围是,而且只能表示有限个浮点数,能表示的个数为个。 0.1+0.2 等于0.3吗?相信拿着这条题目随便问一个高年级的小学生,他们都会毫不犹豫都回答:相等。是的,相等是正常的,这是常识。但是都说实践是检验真理的唯一标准,拿这道简单的算术题用javascript在chrome控制台试验一下: 结果令人大跌眼镜,在控制台输入0.1+0.2 == 0.3返回的结果竟然...

    ivydom 评论0 收藏0

发表评论

0条评论

3fuyu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<