Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Javasript';这是严格的比较吗?_Javascript_Comparison_Operators_Strict - Fatal编程技术网

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)规定小数必须以这种方式存储。