繁体   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