0

编辑:找到答案,不需要进一步的评论/答案,谢谢!

我不知道我的脚本中发生了什么,我知道可能有一个与此非常相似的问题,但这里是:

console.log( ( 3 * 0.10 ) ); 
= 0.3000000000004 ( estimated the zeros, but close ) 

我试过了parseInt(),我试过.10.1。为什么不给我0.3?。

console.log( ( 2 * 0.10 ) ); 
= 0.2 

有人可以帮我弄这个吗?

4

3 回答 3

3

发生这种情况是因为我们无法映射整个实数范围。参见w:floating point

于 2013-01-11T22:15:15.090 回答
1

JavaScript 使用二进制浮点数。没有办法将0.1or表示0.3为有限长度的二进制数,就像不可能写成1/3十进制数一样。

于 2013-01-11T22:15:25.963 回答
1

这就是数字的二进制表示所发生的情况。用二进制表示 0.3 是不可能的,所以当计算机转换数字时,它会尽可能地接近。在这种情况下,不完全是 0.3 。您可以通过格式化输出来解决这个问题 - 使用该.toFixed()方法。在您的情况下,如果您只想输出一个有效数字,您会这样做

var result
result = 3 * 0.10
console.log( result.toFixed(1) )
于 2013-01-11T22:34:46.080 回答