关于javascript:如何在没有问题0.1 + 0.2!== 0.3的情况下添加浮点数?

How can I add float numbers without issue 0.1 + 0.2 !== 0.3?

本问题已经有最佳答案,请猛点这里访问。

我在地图应用程序中工作。所以我用浮点数(lat和long)处理了很多。我知道我们有与0.1+0.2相关的问题!==0.3。那我怎么能使它无效呢?有什么方法可以增加多个浮点数吗?


一种解决方案是以一种考虑到(非常小)由IEEE754浮动导致的精度损失的方式比较值,这种浮动无法准确地表示所有分数,例如。

1
2
3
4
5
6
7
8
9
10
function diff(a, b) {
  return Math.abs(a - b);
}

var a = 0.1;
var b = 0.2;

if ( diff(0.3, a+b) > 1e-10) {
   /* fail */
}

如果需要JavaScript中的精度,您应该使用像https://github.com/mikecl/big.js这样的大数字。/