`
xifangyuhui
  • 浏览: 188571 次
  • 性别: 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解惑_solve65p_

    《Java解惑(中文版)》是一本专为Java初学者设计的学习资料,旨在帮助读者解答在学习Java过程中遇到的各种困惑。"solve65p"可能代表这本书包含65个问题或主题,每个都深入浅出地进行了讲解,旨在解决初学者在编程...

    Java解惑 中文版

    《Java解惑中文版》是一本专为Java程序员设计的指南,旨在帮助读者解决在编程过程中遇到的各种问题,提升程序的健壮性。本书深入浅出地探讨了Java语言的核心概念、常见疑惑以及最佳实践,旨在使开发者能够编写出更...

    JAVA 解惑 java经典

    "JAVA解惑"的主题针对的是Java学习过程中遇到的一些常见问题和难点,旨在帮助开发者深入理解和解决这些问题。以下是基于这个主题和描述可能涵盖的一些关键知识点: 1. **Java基础**:这可能包括变量、数据类型、...

    Java PUZZLE Java 解惑

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

    java解惑(包括pdf和答案)

    "java解惑"这个主题旨在帮助初学者理解和解决在学习Java过程中遇到的问题,通过实例来深入浅出地讲解Java的基础知识,同时也强调了实用技巧和注意事项。 "Java解惑"的资料可能包含了两部分:`.chm`和`.pdf`格式的...

    Java解惑.pdf

    Java编程语言是世界上最流行的开发平台之一,广泛应用于企业级应用、移动应用(尤其是Android系统)、大数据处理、云计算等领域。这份“Java解惑.pdf”文档很可能包含了解决Java开发者在编程过程中遇到的常见问题和...

    java解惑 PDF版

    在Java编程中,开发者经常会遇到各种误区和混淆之处,这些问题可能涉及语言特性、算法逻辑、性能优化等多方面。文档《java解惑 PDF版》中列举了95个这样的谜题,每个谜题都旨在帮助开发者理解并纠正一些常见的错误...

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

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

    JAVA解惑.pdf

    《JAVA解惑》这本书主要针对Java编程中遇到的各种常见问题和困惑进行了解答,旨在帮助开发者深入理解Java语言,提高编程技巧。以下是一些关键的知识点解析: 1. **异常处理**:Java中的异常处理是通过try-catch-...

    "java解惑" PDF版本

    "java解惑" PDF版本

    4,JAVA解惑 高清PDF 下载

    《JAVA解惑》是Java开发者领域的一本经典著作,它被广大编程爱好者称为Java四大名著之一,旨在解决初学者及有一定经验的开发者在学习和使用Java过程中遇到的各种困惑。这本书深入浅出地讲解了Java语言的核心概念和...

    java解惑java解惑java解惑

    "Java解惑"这个主题,显然旨在帮助开发者解决他们在学习和实践中遇到的问题。在Java的世界里,疑惑可能涵盖语法、类库、框架、并发、内存管理等多个方面。下面,我们将深入探讨一些常见的Java解惑知识点。 1. **...

    java解惑 for all javaer

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

    Java解惑(中文).pdf

    "Java解惑(中文).pdf"这份文档很显然是为了帮助Java开发者解决他们在编程过程中遇到的一些常见困惑和误解。这份高清版、文字版的资料很可能包含了深入浅出的解释和实例分析,以中文的形式呈现,使得国内开发者更容易...

    Java解惑(中文).pdf

    《Java解惑(中文)》是一本专门为Java开发者编写的指南书籍,旨在解决在实际编程过程中遇到的各种疑惑和难题。本书以中文语言呈现,使得国内的Java程序员能够更轻松地理解并应用其中的知识。通过阅读这本书,读者...

    Java解惑(整理版本)

    《Java解惑(整理版本)》是一篇针对Java编程语言常见问题和疑惑的详细解析文章。博主通过深入探讨Java源码和使用工具的角度,帮助开发者解决实际开发中遇到的问题。以下将围绕标题和描述中的知识点进行展开: 1. *...

    java 解惑

    这篇博客“java 解惑”可能涵盖了Java开发中的一些常见问题和解决方法,旨在帮助开发者解决他们在编程过程中遇到的难题。通过阅读博主戈友阿姨在iteye上的这篇博文,我们可以期待获取到一些关于Java编程的实际问题...

Global site tag (gtag.js) - Google Analytics