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

时间:2014-02-20 04:48:21

标签: javascript floating-point

我在地图应用中工作。所以我用浮点数(lat和long)操纵了很多。我知道我们有与0.1 + 0.2!== 0.3相关的问题。那么我怎么能取消它呢?有没有方法可以添加多个浮点数?

2 个答案:

答案 0 :(得分:2)

一种解决方案是以一种考虑到由IEEE 754浮点数无法准确表示所有分数而导致的(极小)精度损失的方式比较值,例如

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 */
}

答案 1 :(得分:0)

如果您需要使用Javascript中的精确度,则应使用https://github.com/MikeMcl/big.js/

等大数字