对于在chrome,firefox上测试过的这种奇怪行为是否有任何解释,即当您执行8.9 * 3时,您将获得26.700000000000003
console.log(8.9 * 3);
有帮助吗?
您已经发现了在计算机中进行实数数学的“乐趣”。
JavaScript使用64位IEEE-754数字;这留下了64位来表示它知道的所有可能的实数。
它们被表示为我们所谓的“浮点数”,这仅表示计算机将特征(整数部分)和尾数(分数部分)存储在这64位中。小数点左边的整数部分很容易处理。尾数有点棘手,并且基本上以二进制形式存储为尾数。
不幸的是,这样的二进制分数不能总是以100%的精度表示十进制数...。您已经发现一种这样的情况。