![](/img/trans.png)
[英]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.