<?php
$nan = (-1e300*1e300)/(1e300*1e300); // float(NAN)
var_dump($nan);
var_dump($nan == $nan);
var_dump($nan === $nan);
// output:
float(NAN)
bool(false)
bool(false)原以为会是 bool(true) 为什么会这样?

解决方案 »

  1.   

    float的指数范围为-127~+128你却用到300,不出错才怪呢
      

  2.   

    我知道这将得到 NAN,但我纳闷的是 $nan 怎么会不等于 $nan
      

  3.   

    引一段文字
    一、什么是NaN
    NaN在网上定义为:NaN属性用于引用特殊的非数字值。我的理解就是,原来不是number类型的数据,经过某些运算后,变成了number类型,这时候,这个数据就成了NaN类型。二、说明
    无法使用for/in循环来枚举NaN属性,也不能用delete运算符来删除它。
    NaN不是常量,可以把它设置为其他值。
    请使用isNaN()来判断一个值是否是数字,原因是NaN与所有值都不相等,包括它自己。