可能的重复:
JavaScript 的数学被破坏了吗?
有趣的问题,但为什么在 16.1 javascript 变得“疯狂”?:)
代码:
var value1=16.1;
var value2=16.2;
console.log(value1 * 1000);
console.log(value2 * 1000);
输出 :
16100.000000000002
16200
为什么?
可能的重复:
JavaScript 的数学被破坏了吗?
有趣的问题,但为什么在 16.1 javascript 变得“疯狂”?:)
代码:
var value1=16.1;
var value2=16.2;
console.log(value1 * 1000);
console.log(value2 * 1000);
输出 :
16100.000000000002
16200
为什么?
那是因为 javascript 在内部将所有内容都转换为 double。结果,由于浮点不准确性,所有计算都会产生一些噪音: Floating point inaccuracy examples
解决此问题的一种方法是在所有中间计算之后向下舍入到最接近的 int。