我已经注意到javascript中的简单乘法有时会产生错误的结果。不正确,我不是说浮动值问题(2.999999而不是3),而是绝对错误的结果,即2.6581而不是44.919283。

我试图用短代码重现这种情况,但是我没有设法做到这一点。我只在整个程序中注意到这些错误。

例如,我有以下几行:

 console.log('myHighestBuy = ' + myHighestBuy);
 console.log('theirLowestSell = ' + theirLowestSell);

 if ((theirLowestSell * 0.85) < myHighestBuy){

   console.log('If condition is true');
   offerDeal(name, theirLowestSell, MarketPrice, myHighestBuy)

 } else {

   console.log('Not calling offerDeal()');

 }



我注意到,尽管实际上它不必必须调用offerDeal()函数。

正确的案例控制台日志:

myHighestBuy = 16.22
theirLowestSell = 27.78
Not calling offerDeal()


但是一旦我在控制台中有了这个:

myHighestBuy = 16.22
theirLowestSell = 27.78
If condition is true


为什么可能呢?是条件失败还是乘法错误?

最佳答案

您缺少一些关键知识,但是无法确定问题中给出的信息。

我的幻想告诉我,您可能无意中使用了一个以局部变量为单位的全局变量;这是JavaScript中的常见危害。我的建议是发现是否正确

"use strict";


作为文件的第一行。

07-28 10:52