我们如何在我们的代码中使用它们,以及什么会导致NaN(不是数字)?
正无穷大意味着向正方向转向无穷大 - 进入正向大小越来越大的值.
负无穷大意味着在负方向上进入无穷大 - 进入负向方向上越来越大的值.
非数字(NaN)是未定义的,例如结果0/0
.
并且来自Float
类的规范的常量:
Float.NEGATIVE_INFINITY
Float.POSITIVE_INFINITY
Float.NaN
更多信息可以在维基百科的IEEE-754页面中找到.
这是一个用来说明三个常量的小程序:
System.out.println(0f / 0f); System.out.println(1f / 0f); System.out.println(-1f / 0f);
输出:
NaN Infinity -Infinity
如果您想要了解有关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.