我已经测试了is_numeric
函数在PHP中的NAN
常数和给定的结果
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不应该与其他值进行比较,包括NAN本身,而应该使用is_nan()来检查。
NAN是一个非零浮点值。NAN是什么?它是(-1)
的平方根。
现在是复数。(-1)
的平方根是+i
或-i
,这意味着NAN可以有两个值。因此,如果NAN
求值为-i
或false
,则NAN == false
将变为true。