是JavaScript的知识问题还是我的代码有问题?

时间:2015-09-11 22:54:41

标签: javascript web

我在网络的某个过程中遇到了问题,经过一段时间寻找问题,我可以发现发生了什么,现在我有一个问题,为什么会发生?

实施例: 下面是一个代码示例:

function DoSomething(number, divisor){
var result = number % divisor;
var minimumAllowed = 0;
  if(result == minimumAllowed){
          .... Do stuff
  }
}

当代码传递参数时,number = 1000和divisor = 0.2,我可以重现这个问题。

这是mozilla控制台中的问题:

1000 % .2 = 0.1999999999999445
1000 / .2 = 5000

我认为1000 % .2 = 0,而不是0.1999999999999445所以1000 / .2 is 5000

非常感谢解释。

1 个答案:

答案 0 :(得分:1)

问题不在于javascript,而是处理器处理浮点数的方式。

基本上每个浮点运算都会带来数学错误的成本,通常非常小,当你添加,乘法等等时,但是一旦你需要检查某些东西是否相等就会变得非常痛苦,就像在这种情况下一样

如果您尝试使用整数值的代码(尝试10000%2),您应该得到正确的答案。