简单的数学加倍多乘零?

时间:2013-01-11 22:10:59

标签: javascript math

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

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

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

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

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

有人可以帮我吗?

3 个答案:

答案 0 :(得分:3)

这是因为我们无法映射整个实数范围。请参阅w:floating point

答案 1 :(得分:1)

JavaScript使用二进制浮点数。无法将0.10.3表示为有限长度的二进制数,就像无法将1/3写为十进制数一样。

答案 2 :(得分:1)

这是数字二进制表示的情况。不可能以二进制形式制作0.3的“精确”表示,因此当计算机转换数字时,它将使其尽可能接近。在这种情况下,不完全是0.3。 您可以使用.toFixed()方法格式化输出来解决此问题。 在您的情况下,如果您只想输出一个有效数字,那么您可以

var result
result = 3 * 0.10
console.log( result.toFixed(1) )