Javascript 为什么Javasript';这是严格的比较吗?
可能重复:Javascript 为什么Javasript';这是严格的比较吗?,javascript,comparison,operators,strict,Javascript,Comparison,Operators,Strict,可能重复: 如果Javascript的“严格比较”操作符与传统操作符之间的主要区别是类型强制,那么为什么呢 0.1+0.2===0.3; 返回false?因为0.1很复杂 它以二进制形式重复出现(参见注释) 编辑 事实上,我在这里玩,我不确定。有没有一个数学专家可以反驳或提供证据? 这将非常有趣,因为0.1很棘手 它以二进制形式重复出现(参见注释) 编辑 事实上,我在这里玩,我不确定。有没有一个数学专家可以反驳或提供证据? 在Firefox和Chrome中,0.1+0.2是0.3000000
如果Javascript的“严格比较”操作符与传统操作符之间的主要区别是类型强制,那么为什么呢
0.1+0.2===0.3;
返回false?因为0.1很复杂它以二进制形式重复出现(参见注释) 编辑
事实上,我在这里玩,我不确定。有没有一个数学专家可以反驳或提供证据?
这将非常有趣,因为0.1很棘手
它以二进制形式重复出现(参见注释) 编辑
事实上,我在这里玩,我不确定。有没有一个数学专家可以反驳或提供证据?
在Firefox和Chrome中,
0.1+0.2
是0.300000000000000004
,这不等于0.3
。这可能是因为无法将0.1
精确地表示为浮点数。在Firefox和Chrome中,0.1+0.2
是0.300000000000000004
,这不等于0.3
。这可能是因为无法将0.1
精确地表示为浮点数。“无理”不是真的-1/10是一个有理数,无论您存储的是什么基。但是,它是一个循环二进制,因此不可能使用普通的浮点表示法精确表示它。十进制中的0.1是0.000110011。。。重复出现在二进制中。理性可以表示为分数-愚蠢的我。你能解释一下为什么它会重复出现吗?在二进制中,超过点的每一个数字代表1/2、1/4、1/8、1/16,就像在十进制中是1/10、1/100、1/1000一样。仅仅使用这些二元分数,你永远无法精确相加到1/10。你能得到的最接近的是1/16+1/32+1/256+1/512+。。。。(0.000110011…)IEEE标准(754)规定小数必须以这种方式存储。“非理性”不是真的-1/10是一个有理数,无论您存储的是什么基。但是,它是一个循环二进制,因此不可能使用普通的浮点表示法精确表示它。十进制中的0.1是0.000110011。。。重复出现在二进制中。理性可以表示为分数-愚蠢的我。你能解释一下为什么它会重复出现吗?在二进制中,超过点的每一个数字代表1/2、1/4、1/8、1/16,就像在十进制中是1/10、1/100、1/1000一样。仅仅使用这些二元分数,你永远无法精确相加到1/10。你能得到的最接近的是1/16+1/32+1/256+1/512+。。。。(0.000110011…)IEEE标准(754)规定小数必须以这种方式存储。