答案 0 :(得分:6)
关于浮点运算的基本阅读。
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
简而言之:
将无数多个实数压缩成有限数量的位 需要近似的表示。虽然有无限的 许多整数,在大多数程序中,整数计算的结果都可以 以32位存储。相反,给定任意数量的位, 大多数带有实数的计算都会产生数量 不能使用那么多位来精确表示。因此 浮点计算的结果通常必须按顺序舍入 以适应其有限的表示。这个舍入误差是 浮点计算的特征。
答案 1 :(得分:4)
嗯,经典的例子是:
0.1 + 0.2 = 0.30000000000000004
IEEE 754双精度浮点数(这是JavaScript uses)非常好,但它们并不完美。它们提供了一种快速的方法,可以对浮点数进行大多数正确但不完美的计算。所有数字系统都有这样的妥协(例如,尝试准确地代表1 / 3
- 或PI,例如有限的十进制数字。)
答案 2 :(得分:4)
这是正常的 - 使用浮点数时会有一个称为精度的东西。它出现在大多数现代语言中。有关详细信息,请参见此处:http://www.mredkj.com/javascript/nfbasic2.html。
在这种思路中 - 如果不使用EPS(epsilon值),则无法比较浮点数。如果您需要更多信息 - 请随时与我联系。