首页 > 其他 > 详细

正确的比较浮点数的方法?

时间:2020-10-12 17:36:10      阅读:45      评论:0      收藏:0      [点我收藏+]

根据双精度浮点数的定义,Number 类型中有效的整数范围是 -0x1fffffffffffff 至 0x1fffffffffffff,所以 Number 无法精确表示此范围外的整数。

同样根据浮点数的定义,非整数的 Number 类型无法用 ==(=== 也不行) 来比较,一段著名的代码,为什么在 JavaScript 中,0.1+0.2 不能 =0.3:

  console.log( 0.1 + 0.2 == 0.3);

  这里输出的结果是 false,说明两边不相等的,这是浮点运算的特点,也是疑惑的来源,浮点数运算的精度问题导致等式左右的结果并不是严格相等,而是相差了个微小的值。所以实际上,这里错误的不是结论,而是比较的方法,正确的比较方法是使用 JavaScript 提供的最小精度值:

  console.log( Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON);

  检查等式左右两边差的绝对值是否小于最小精度,才是正确的比较浮点数的方法。这段代码结果就是 true 了。

 

 每一个努力的人都值得被肯定,但是最大的肯定来源于自己!!!

     加油每一天!!!

正确的比较浮点数的方法?

原文:https://www.cnblogs.com/MrzhangRecord/p/13803316.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!