php中那些容易忽略的”大知识“ NAN

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代表着不同的值,往下深挖,敬请期待。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值