首页 > 解决方案 > 乘数为 8.9 * 3 的 javascript 奇怪行为

问题描述

对于在 chrome、firefox 上测试的这种奇怪行为是否有任何解释,即。当你做 8.9 * 3 你得到 26.700000000000003

console.log(8.9 * 3);

有什么帮助吗?

标签: javascriptbehavior

解决方案


您已经发现了在计算机中进行实数数学运算的“乐趣”。

JavaScript 使用 64 位 IEEE-754 数字;这留下了 64 位来表示它知道的所有可能的实数。

它们被表示为我们所说的“浮点”数,这只是意味着计算机将特征(整数部分)和尾数(小数部分)存储在这些 64 位中。小数点左边的整数部分很容易处理。尾数有点棘手,它被存储,基本上是二进制的分数。

不幸的是,这样的二进制分数不能总是以 100% 的准确率表示十进制数量……您已经发现了一种这样的情况。


推荐阅读