为什么会这样:
1 === 1;// true
0 === -0;// true
1/0 === 1/-0;// false
原因:
1/0=Infinite;
1/-0=-Infinite;
问题:
为什么不是1/0或1 / -0 未定义或 NaN ?
它不能是Infinity或-Infinity,因为0等于-0,所以1/0等于1 / -0,我应该说,但为什么不是呢?以及为什么它不是未定义的(我的计算器说什么)或NaN。
答案 0 :(得分:2)
这是因为IEEE 754 specifications是这样定义的。
这是有原因的:affinely extended real number system 用两个无穷大扩展实数,这为使用limits进行计算提供了更多空间。因此,通过这种扩展,除以零不是undefined
或NaN
。
请考虑以下情况对于正数 x 是正确的:
lim x→0 (x)= lim x→0 (-x)
对于肯定的 x ,以下内容为 :
lim x→0 (1 / x)= lim x→0 (1 / -x)
请注意上述带有限制符号的比较如何映射到您列出的比较:
0 === -0;// true
1/0 === 1/-0;// false
第二,除法始终保持以下不变性:当且仅当正好一个操作数为负时,结果为负。
这两个考虑因素都证明了在IEEE 754中的应用理由:
1/0 === Infinity
1/-0 === -Infinity