为什么is_numeric(NAN)返回TRUE?

时间:2016-11-11 19:36:12

标签: php nan

我测试了PHP中data.frame常量中的is_numeric函数和给定结果

NAN

但NAN表示“不是数字”。为什么函数is_numeric(NAN); // TRUE 会返回is_numeric

我知道NAN属于true类型。但在测试下面两种情况时,结果是不同的:

float

为什么会出现这种情况?

抱歉,我的英语不好

2 个答案:

答案 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评估为-ifalse,则NAN == false将成为真。