如果JavaScript的 “严格比较” 运营商和传统的人之间的主要区别是强制类型转换,为什么
0.1+0.2===0.3;
将返回false ?
如果JavaScript的 “严格比较” 运营商和传统的人之间的主要区别是强制类型转换,为什么
0.1+0.2===0.3;
将返回false ?
在Firefox和Chrome,0.1 + 0.2
是0.30000000000000004
,这不等于0.3
。这大概是由于它不可能完全代表0.1
作为浮点数。
因为0.1是棘手
它
不合理
二进制(见注释)重复
编辑
其实我在这里即兴发挥,我不知道那是肯定的。是否有Math.boffin可以反证或提供证明?
将是非常有趣
“非理性”是不正确的 - 无论您存储什么基础,1/10都是一个理性数字。 ,它*是一个反复出现的二进制数,所以不可能使用正常的浮点表示法来精确地表示它。 – 2010-02-16 00:37:35
十进制中的0.1是0.00011001100110011 ...以二进制形式重复出现。 – 2010-02-16 00:40:31
理性被表达为一小部分 - 愚蠢的我。你能否介绍一下为什么它会再次发生? – meouw 2010-02-16 00:41:30
http://stackoverflow.com/questions/588004/is-javascripts-math-broken – Sampson 2010-02-16 00:33:48