NAN
相信phper在工作中或多或少的遇到过它,但是接下来的问题你未必会全部答对。
1.NAN是什么类型的?
2.判断(NAN || false) 为true还是false?
3.判断(NAN == NAN) 为true还是false?
4.判断(NAN === NAN) 为true还是false?
5.var_dump(-NAN) 结果会显示什么?
如果你能够答对以上五个问题,恭喜你,你对于浮点型的基础知识相当扎实。
如果你在思考以上五个问题,并试图解答,那说明你对这块的知识是很欠缺的。
如果你在回答以上问题时毫无思绪,并不能联想到这是浮点型数据的相关知识,那你需要认真的看完我对以上问题的解释。
首先公布一下答案
1.float
2.true
3.false
4.false
5.NAN
当你阅读到这里,应该就会有一种疑惑,在php中判断自身等于自身怎么会是false呢,是的在php中判断自身等于自身全等也会返回true,但在NAN这里似乎有违常规,我们来解释一下NAN 是什么。
在php的官方文档中是这样解释的,”某些数学运算会产生一个由常量 NAN
所代表的结果。此结果代表着一个在浮点数运算中未定义或不可表述的值。任何拿此值与其它任何值(除了 TRUE
)进行的松散或严格比较的结果都是 FALSE
。由于 NAN
代表着任何不同值,不应拿 NAN
去和其它值进行比较,包括其自身”。这里的说明就很清楚了,NAN代表着任何不同值,也就是说便面看上去(NAN == NAN)是判断自身是否等于自身,实际上等号前NAN和等号后的NAN代表着不同的值。如果你理解其真正的含义,那上面的五道题你觉得需要思考吗。
后续更新为什么在php中NAN代表着不同的值,往下深挖,敬请期待。