我不知道我的剧本中发生了什么,我知道可能有一个与此非常相似的问题但是这里有:
console.log( ( 3 * 0.10 ) );
= 0.3000000000004 ( estimated the zeros, but close )
我尝试了parseInt()
,我尝试了.1
和0.1
。为什么不给我0.3
?
console.log( ( 2 * 0.10 ) );
= 0.2
有人可以帮我吗?
答案 0 :(得分:3)
这是因为我们无法映射整个实数范围。请参阅w:floating point。
答案 1 :(得分:1)
JavaScript使用二进制浮点数。无法将0.1
或0.3
表示为有限长度的二进制数,就像无法将1/3
写为十进制数一样。
答案 2 :(得分:1)
这是数字二进制表示的情况。不可能以二进制形式制作0.3的“精确”表示,因此当计算机转换数字时,它将使其尽可能接近。在这种情况下,不完全是0.3。
您可以使用.toFixed()
方法格式化输出来解决此问题。
在您的情况下,如果您只想输出一个有效数字,那么您可以
var result
result = 3 * 0.10
console.log( result.toFixed(1) )