public static float max(float a, float b) {
        if (a != a) return a; // a is NaN
if ((a == 0.0f) && (b == 0.0f)
    && (Float.floatToIntBits(a) == negativeZeroFloatBits)) {
    return b;
}
return (a >= b) ? a : b;
    }
今天研究下Math类源代码,if (a != a) return a; // a is NaN实在看不懂这句是什么意思??
真让人摸不着头脑

解决方案 »

  1.   

    NaN只能这样判断了。因为 NaN就是不等于NaN的
      

  2.   

    Not a Number(不是一个数字)
    java里也有NaN?不是JavaScript里的吗?
    而且接受的参数a如果不是float以及能够转为float的参数,jvm应该报错的呀。
    怎么还需要判断是否NaN??
      

  3.   

    java中也有NaN
            double a =0 , b= 0 ,c;
            c = a/(a+b);
            System.out.println(c);
      

  4.   

    你可以这样理解“NaN表示算术表达式返回的非数字值的非凡值”,NaN是个非常特殊的类型,因为它不与任何值相等,包括其本身。要检测值是否为 NaN,用 isNaN 函数。楼上的例子非常棒,楼主应该给分。
      

  5.   


    NaN不是正负无穷大看 public static void main(String[] args) {
    double a = 0 / 0.0;
    double b = 1 / 0.0;
    System.out.println(a);
    System.out.println(a == a);
    System.out.println("-----------------------------");
    System.out.println(b);
    System.out.println(b == b);
    }
      

  6.   

    这是上面程序的打印结果
    NaN
    false
    -----------------------------
    Infinity
    true
      

  7.   

    保证是比较的2个数。
       做程序员有两年的时间了,看到公司的同时一个个面目无光的样子,自己也有点害怕了,以前的学校的时候经常还抽点时间打篮球,现在时间太紧了,根本没有自己的时间了,整天就是不停的写代码啊,改代码啊,好郁闷啊。开始一段时间腰酸背痛的好难受啊!脖子也疼,经常熬夜,还有点掉头发了,现在都好怕啊,不知道在过几年程序员做不了了,身体也跨了,到时那好郁闷啊!观察了一下同事,他们灯的并是五花八门的,大致有这么一些病:颈椎病;腰肌劳损;腿粗;掉头发;眼睛模糊;身体虚;湿气重;关节疼;驼背等等等等。我看还有人得了肾虚啊!!
       现在我们应该爱护自己的身体啊!身体是革命的本钱,身体跨了,什么都别想了。好不容易有两天时间休息,到床上都不想起来,累啊!想出去购物都没时间,好是郁闷啊!强烈要求只上4天班放1天调整房两天假。哈哈,想去买点健身器材都懒的出去,还好同事告诉我可以再网上订购,送货上门在付款,日哦,刚买了个臂力器,送货的态度还行,就买了,不然海扁他一顿叫他滚。哈哈,对了,不想出去买的朋友可以去看看,花样还蛮多的,我准备买个按摩脚的,听说脚上有144个穴位,占了全身的3分之1了,按一按很舒服吧,哈哈。希望大家发表一下坐程序员应该注意些什么,哦,对了,把我买健身器材的网址给大家贴一下,希望对大家有帮助!呵呵。叫什么健身购物天堂 http://s.click.taobao.com/a/qvVp5Dv+1B4=-11429151 有需要的去看看吧!祝愿大家都身体健康!长命百岁哦!
      

  8.   

    NaN 就是Not a Number的意思
      

  9.   

    Java就没有个isInfinite之类的函数?
      

  10.   

    1 / 0.0不也是无穷大吗,为什么不是NaN而是Infinity?
      

  11.   

    应该是这样double a = 1/0.0;
    double b = -1/0.0;
    double c = a + b;
    System.out.println(a);
    System.out.println(b);
    System.out.println(c);
      

  12.   

       Not a Number!
      

  13.   


    就是空值的意思,相当于C#中的NULL
      

  14.   

    NaN是什么意思啊!!有意思啊