是JavaScript的知识问题或在我的代码是错误的

Is a knowledge issue of JavaScript or is something wrong in my code?

本文关键字:我的 错误 代码 问题 JavaScript 知识      更新时间:2023-09-26

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

的例子:下面是一个代码示例:

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

谢谢你的解释

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

基本上每个浮点运算都有一个数学错误的代价,通常很小,当你加,乘,等等,但是当你需要检查某些东西是否相等时,就变得非常痛苦,就像在这个例子中。

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