簡體   English   中英

為什么is_numeric(NAN)返回TRUE?

[英]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求值為-ifalse ,則NAN == false將變為true。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM