[英]Why does is_numeric() return false when passed a seemingly numeric string?
[英]Why does is_numeric(NAN) return TRUE?
我已經在PHP的NAN
常量中測試了is_numeric
函數,並給出了結果
is_numeric(NAN); // TRUE
但是NAN的意思是“不是數字”。 為什么函數is_numeric
返回true
?
我知道NAN是float
型的。 但是,當測試以下兩種情況時,結果是不同的:
is_float(NAN) // true
filter_var(NAN, FILTER_VALIDATE_FLOAT)// false
為什么會發生呢?
對不起,我的英語不好
NAN
是一個特殊常數。 它必須保存一些值,所以它保存一個float
數據類型
var_dump(NAN); // float(NAN);
問題在於filter_var
不是在比較數據類型,而是在尋找數字,而NAN
不是 。
一些數字運算可能會導致由常量NAN表示的值。 該結果表示浮點計算中的未定義或無法表示的值。 將該值與任何其他值(包括其自身)進行任何寬松或嚴格的比較,將得出FALSE的結果。
由於NAN代表任意數量的不同值,因此不應將NAN與其他值(包括其自身)進行比較,而應使用is_nan()進行檢查。
NAN是一個非零浮點值。 什么是NAN,其平方根是(-1)
。
因此,現在涉及到復數。 (-1)
平方根是+i
或-i
,這意味着NAN可以有兩個值。 因此,如果NAN
求值為-i
或false
,則NAN == false
將變為true。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.