Javascript不喜欢16.1的价值?

时间:2012-11-06 09:32:11

标签: javascript

  

可能重复:
  Is JavaScript’s Math broken?

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

Code

var value1=16.1;
var value2=16.2;

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

输出:

16100.000000000002
16200 

为什么?

2 个答案:

答案 0 :(得分:1)

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

Is floating point math broken?

解释根问题和一些有用的解决方法。

答案 1 :(得分:1)

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

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

Answer Copy From Here