我测试了PHP中data.frame
常量中的is_numeric
函数和给定结果
NAN
但NAN表示“不是数字”。为什么函数is_numeric(NAN); // TRUE
会返回is_numeric
?
我知道NAN属于true
类型。但在测试下面两种情况时,结果是不同的:
float
为什么会出现这种情况?
抱歉,我的英语不好
答案 0 :(得分:3)
NAN
是一个特殊常数。它必须保留一些值,因此它包含float
数据类型
var_dump(NAN); // float(NAN);
问题是filter_var
没有比较数据类型,它正在寻找数字,NAN
is not。
某些数值运算可能会导致常量NAN表示的值。此结果表示浮点计算中未定义或不可表示的值。任何宽松或严格的此值与任何其他值(包括其自身)的比较都将导致FALSE结果。
由于NAN表示任意数量的不同值,因此不应将NAN与其他值(包括其自身)进行比较,而应使用is_nan()进行检查。
答案 1 :(得分:1)
NAN是非零浮点值。什么是NAN,它是(-1)
的平方根。
现在谈到复杂的数字。 (-1)
的平方根为+i
或-i
,这意味着NAN可以有两个值。因此,如果NAN
评估为-i
或false
,则NAN == false
将成为真。