请问这三个特殊的浮点值的含义:正无穷大,负无穷大,NaN的?(What do these three special floating-point values mean: positive infinity, negative infinity, NaN?)

我们如何能够利用他们在我们的代码,什么会导致NaN(非数字)?

Answer 1:

可能是一个很好的参考,如果你想了解更多关于浮点数的Java。

正无穷大是正数如此之大,不能正常表示。 负无穷大是一个负数如此之大,不能正常地表示。 为NaN意思是“不是数”和从数学运算的结果不产生像号 - 除以0 0。

在Java中,double和float类都有常量来表示所有这三种情况。 他们是POSITIVE_INFINITY,NEGATIVE_INFINITY和NaN。

加上考虑这个问题:

double a = Math.pow(10, 600) - Math.pow(10, 600); //==NaN

在数学上,大家可以看到它是0,但对于机器,它是一个“无限” - “无限”(同等级的),这确实是NaN的。



Answer 2:

  • 正无穷大意味着要到无穷大的正方向 - 进入是在正方向和较大的幅度较大的值。
  • 负无穷大意味着要为无穷大在负方向 - 进入是在负方向上变大,且在量值较大的值。
  • 不非数值 (NAN)的东西是未定义,如的结果0/0

而从的规范常数Float类:

更多信息可以在发现在维基百科IEEE-754页

这里有一个小程序来说明三个常量:

System.out.println(0f / 0f);
System.out.println(1f / 0f);
System.out.println(-1f / 0f);

输出:

NaN
Infinity
-Infinity


Answer 3:

  • 1/0将导致正无穷大。
  • 0/0将导致楠。 可以使用的NaN任何其他数量,例如:为NaN +的NaN = NaN时,NaN的+ 2.0 = NaN的
  • -1/0将导致负无穷大。

无穷大(在Java)表示的操作的结果将是,使得它不能正常地表示一个非常大的正数或负数。



Answer 4:

这样做是为了表示它可以从“正常”的数字操作中自然产生的特殊号码。 你可以看到无穷大(正面和负面的)作为浮点表示的“溢出”的想法是,至少在某些情况下,具有这样的值的函数返回仍然给出有意义的结果。 他们仍然有一定的顺序性,例如(所以他们不会搞砸排序操作,例如)。

楠很特别:如果x楠,X = = x是错误的(这实际上测试楠,至少用C的一种方式,再次)。 如果你不使用浮点特殊性,这可能会相当混乱。 除非你做科学计算,我会说,有楠返回的操作是一个错误,至少在浮现在脑海中大多数情况下。 楠能来进行各种操作:0/0,INF - INF,INF / INF,0 * INF。 楠没有任何排序特性,无论是。



Answer 5:

你可以将它们用作任何其他号码:

例如:

float min = Float.NEGATIVE_INFINITY;
float max = Float.POSITIVE_INFINITY;
float nan = Float.NaN;


Answer 6:

正无穷大是正数如此之大,不能正常表示。 负无穷大是一个负数如此之大,不能正常地表示。 为NaN指从数学运算不产生数 “不是数”和结果-像除以0 0。

这不是一个完整的答案(或不澄清就够了) - 考虑这个问题:

double a = Math.pow(10,600) - Math.pow(10,600); //==NaN

数学大家可以看到它是0,但对于机器它是一个“无限” - “无限”(同级别)魔女确实是NaN的...