`
xifangyuhui
  • 浏览: 185983 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java解惑之无穷大和NaN

阅读更多

1、i == i + 1

一个数字永远不会等于它自己加1Java 强制要求使用IEEE 754 浮点数算术运算[IEEE 754],它可以让你用一个double float来表示无穷大。正如我们在学校里面学到的,无穷大加1还是无穷大。

你可以用任何被计算为无浮点表达式来初i如:

double i = 1.0 / 0.0;

,你最好是能够标准类为你提供常量

double i = Double.POSITIVE_INFINITY;

事实上,你不i 为无以确永远行。任何足够浮点数都可以实现这一目的,如:

double i = 1.0e40;

样做之所以可以起作用,是因为一个浮点数值,它和其后数值之间的间浮点数的这种分是用定数的有位来表然结果。对一个足够浮点数加1 不会它的值,因为1 是不足以它与其后之间的

浮点数操作返回的是接近的数结果的浮点数值。一旦毗邻浮点数值之间的距离2,那么对其中的一个浮点数值加1 将不会产生任何果,因为其结果有达到两个数值之间的一半。对于float 型,加1 不会产生任何果的最数是2的25次方,即33,554,432;而对于double 型,最数是2的54次方大约1.8 × 1016

毗邻浮点数值之间的距离为一个ulp,它是小单位(unit in the lastplace。在5.0 中,Math.ulp 方法来计算floatdouble 数值的ulp

总之,用一个double 或一个float 数 值来表示无穷大是可以的。大多数人在第一次听到这句话时,多少都会有一点吃惊,可能是因为我们无法用任何整数类型来表示无穷大的原因。第二点,将一个很小 的浮点数加到一个很大的浮点数上时,将不会改变大的浮点数的值。这过于违背直觉了,因为对实际的数字来说这是不成立的。我们应该记住二进制浮点算术只是对 实际算术的一种近似。

2、i != i

一个数总是等于它? IEEE 754 浮点了一个特殊的值用来表一个不是数的数[IEEE 754]。这个值就是NaN不是一个数Not a Number),对于所有好的数定义的浮点计算,0.0/0.0,其值都是它。规范中描述NaN 不等于任何浮点数值,包[JLS 15.21.1]

你可以用任何计算结果为NaN 浮点表达式来初i如:

double i = 0.0 / 0.0;

,为了表达,你可以使用标准类提供常量

double i = Double.NaN;

NaN 还有其他的。任何浮点操作,只要它的一个或个操作数为NaN,那么其结果为NaN。这条规则是非的,但是它具有奇的结果。如,下面的程序将打印false

class Test {

public static void main(String[] args) {

double i = 0.0 / 0.0;

System.out.println(i - i == 0);

}

}

计算NaN 规则于的原理是:一一个计算产生了NaN,它就被了,有任何更的计算可以NaN 值意图使受损的计算续执行下到方便处理这种情况的地方为止。

总之,float double 型都有一个特殊NaN 值,用来表不是数的数 
转载自:无码团队blog-wuma.koubei.com

 

分享到:
评论

相关推荐

    java解惑java解惑java解惑

    java解惑java解惑java解惑java解惑java解惑java解惑

    Java解惑Java解惑

    Java解惑Java解惑Java解惑Java解惑Java解惑Java解惑Java解惑Java解惑Java解惑Java解惑Java解惑Java解惑

    Java解惑.pdf

    Java解惑.pdf Java解惑.pdf Java解惑.pdf Java解惑.pdf

    Java解惑 中文版

    Java解惑中文版 Java解惑 java健壮程序

    JAVA解惑.pdf

    JAVA解惑.pdf JAVA解惑.pdf JAVA解惑.pdf

    Java PUZZLE Java 解惑

    Java PUZZLE Java 解惑 Java PUZZLE Java 解惑 Java PUZZLE Java 解惑Java PUZZLE Java 解惑 Java PUZZLE Java 解惑 Java PUZZLE Java 解惑

    JAVA 解惑 java经典

    JAVA解惑,你面包括一些java经典的问题。

    Java解惑(中文版)_java_java解惑_solve65p_

    与java相关的的学习,适合初学者,可以看看

    最新版的Java-解惑

    《Java解惑》《Java解惑》《Java解惑》《Java解惑》《Java解惑》《Java解惑》

    Java解惑 布洛克 著;陈昊鹏 译

    《Java解惑》 布洛克 著;陈昊鹏 译 扫描清晰带目录,仅供参阅,请支持正版

    java解惑 for all javaer

    讲述如何在程序中避免程序缺陷和程序陷阱的,解惑的过程中,介绍了一些Java编程语言中许多不易被掌握的知识点,其阅读价值非常高,适合具有Java知识的学习者和有编程经验的Java程序员阅读。

    "java解惑" PDF版本

    "java解惑" PDF版本

    JAVA解惑(JAVA谜题) 中文版(PDF)

    Java解惑,是一本以大量java实例,讲述如何在程序中避免程序缺陷和程序陷阱的,解惑的过程中,介绍了一些Java编程语言中许多不易被掌握的知识点,其阅读价值非常高,适合具有Java知识的学习者和有编程经验的Java...

    Java解惑(中文).pdf

    Java解惑(中文).pdf 给大家介绍java中容易迷惑用错的实例

    4,JAVA解惑 高清PDF 下载

    Java四大名著之一:4,JAVA解惑 高清PDF 下载

    《Java Pazzlers》Java解惑.pdf 书签齐全

    该书特写了95个有关Java或其类库的陷阱和缺陷的谜题,其中大多数谜题都采用了短程序的方式,这些程序的行为与其看似的大相径庭。在每个谜题之后都给出了详细的解惑方案,这些解惑方案超越了对程序行为的简单解释,向...

    Java解惑(中文).pdf

    。。。。。 Java解惑(中文) 是一本对 Java一些问题的解答 。。。。。。。。。。

    Java 解惑 中文版 完美书签

    Java解惑,是一本以大量java实例,讲述如何在程序中避免程序缺陷和程序陷阱的,解惑的过程中,介绍了一些Java编程语言中许多不易被掌握的知识点,其阅读价值非常高,适合具有Java知识的学习者和有编程经验的Java...

    java解惑(包括pdf和答案)

    结合实例全面讲解java基础,让初学者掌握java知识的同时,学习使用技巧和注意事项

Global site tag (gtag.js) - Google Analytics