什么样的错误?我该如何解决?
1.1 - 1 = 0.10000000000000009
1.0000001+1 = 2.0000001000000003
什么样的错误?我该如何解决?
1.1 - 1 = 0.10000000000000009
1.0000001+1 = 2.0000001000000003
javascript 使用数据类型float。浮点数永远不会精确,因此在比较数据时不要使用 ==,而是使用 < 和/或 >。
从comp.lang.javascript 常见问题解答(目前似乎已关闭):
ECMAScript 数字以二进制表示为 IEEE-754 (IEC 559) Doubles,分辨率为 53 位,精度为 15-16 位十进制数字;刚好超过的整数9e15
是精确的,但很少有小数部分是精确的。鉴于此,算术尽可能精确,但仅此而已。如果真实结果和所有中间值都是该范围内的整数,则对整数的运算是精确的。
特别是,通常不应比较非整数结果是否相等,并且非整数计算结果通常需要舍入。