2

可能的重复:
JavaScript 的数学被破坏了吗?

有趣的问题,但为什么在 16.1 javascript 变得“疯狂”?:)

代码

var value1=16.1;
var value2=16.2;

console.log(value1 * 1000);
console.log(value2 * 1000);

输出 :

16100.000000000002
16200 

为什么?

4

2 回答 2

1

这不是 javascript 问题,而是与使用浮点数的任何编程语言相关的问题,请参阅

浮点数学被破坏了吗?

用于解释根本问题以及一些有用的解决方法。

于 2012-11-06T09:37:06.003 回答
1

那是因为 javascript 在内部将所有内容都转换为 double。结果,由于浮点不准确性,所有计算都会产生一些噪音: Floating point inaccuracy examples

解决此问题的一种方法是在所有中间计算之后向下舍入到最接近的 int。

从这里复制答案

于 2012-11-06T09:37:12.297 回答