zoukankan      html  css  js  c++  java
  • NAN 规格严格

     经常在程序碰到float跟double类型的变量显示为nan,这个是啥意思呢?经过查阅得知,nan是float或double的一个成员常量,这用来描述一个非法的float或double,Not a Number,表示其实不是一个合理的实数,在合法但不合理的情况下,避免你的程序出现exception,而且nan什么都不是,不能比较,(nan = nan)= false,也可以表示为无穷大或无穷小,或表示不定量的数。

    下面转贴一篇文章,原文地址:http://blog.163.com/itworker@126/blog/static/1339832200972762955433/

    在JDK的Float与Double中有一个很特别的方法isNaN,细心查看JDK源码可以看到NaN只是Float或Double的一个属性,用于描述非法的float,在经过多次运算后Float或Double可能会出现非法的情况,如0.0/0.0。

                public boolean isNaN(float v) {
                     return (v != v);
                 }

           当v为float时比较的是值,这个是毫无疑问的。可什么情况下会出现假呢?这或许与SUN的设计有关

    做以下测试:

    System.out.println(Float.NaN==Float.NaN);

    结果:false

    可以得出结论:

    1、在Float中NaN实际上是引用类型,而不是值类型的。

    2、每一个NaN都是不同的对象。

    http://blog.sina.com.cn/s/blog_79c5bdc30100tozj.html

  • 相关阅读:
    待你长发及腰
    《线段树》讲稿
    Codeforces #Round 376 F 题解
    包裹快递 题解
    Codeforces #Round 376 部分题解
    圆圈舞蹈 题解
    奶牛晒衣服 题解
    BZOJ 1034 题解
    BZOJ 1045 题解
    BZOJ 1054 题解
  • 原文地址:https://www.cnblogs.com/diyunpeng/p/2312113.html
Copyright © 2011-2022 走看看