Jer*_*rub 13 php floating-point
在PHP中,NAN
比较假到0
,"0"
,false
,array()
,array(1)
,NAN
,null
基本上所有其他类变量,我可以辨别.
但NAN == true
回报true
.为什么要NAN == true
回来true
?
在PHP中,与之$x == true
相同$x? true : false
.也就是说,比较等于true
用==
,而不是===
意味着$x
将评估为true在布尔上下文.
如果NAN
要在布尔上下文中求值为false,NAN == false
则将其计算为true.
小智 6
NAN(相当NAN或信令NAN)是非零浮点值. *这就是为什么*
sqrt(-1.0) -> NAN
Run Code Online (Sandbox Code Playgroud)
有-NAN和+ NAN虽然大约有80286,但它通常在测试中被认为是NAN.
如果需要,请检查FPU浮点指令集.
+ INF和-INF也是非零浮点值:
- log(0.0) -> +INF
log(0.0) -> -INF
Run Code Online (Sandbox Code Playgroud)
这是英特尔浮点堆栈的转储.我只列出我正在讨论的几个值:(不要忘记,在内部,FPU是10个字节):
<exp> <mantissa>
0.0 00 00 00 00 00 00 00 00 00 00
-INF FF FF 80 00 00 00 00 00 00 00
+INF 7F FF 80 00 00 00 00 00 00 00
-NAN FF FF C0 00 00 00 00 00 00 00
+NAN 7F FF C0 00 00 00 00 00 00 00
Run Code Online (Sandbox Code Playgroud)
所以你可以看到,只有0.0是零!