我刚刚遇到了原始类型包装类中的常量,如Double.POSITIVE_INFINITY和Double.NEGATIVE_INFINITY.在API中,它将第一个定义为:
持有double类型的正无穷大的常量.它等于Double.longBitsToDouble(0x7ff0000000000000L)返回的值.
其他人也有这些相同的定义.
我遇到的问题是了解这些常数究竟是什么.它们实际上不能或代表正/负无穷大,因为系统本质上是有限的.它是Java创建者认为会定义无限概念的一些任意位设置吗?或者这些确实具有某种特殊价值?如果它只是一个被解释为a的任意字符串double,那么是否有一些正常的数字,当被解释为double将返回POSITIVE_INFINITY而不是实际预期的任何值?
请原谅我,如果Double.longBitsToDouble(0x7ff0000000000000L)API 的部分答案是明显的.说实话,这个描述对我来说非常神秘,我不会假装理解十六进制值实际上意味着什么或代表什么.
Java中浮点数和双精度的包含范围是多少?
为什么不建议在精度至关重要的地方使用float或double?
以下代码将如何表现,尤其是当双计数器达到其极限时((2-2 ^ -52)·2 ^ 1023)?
for (double i = 0; i < Double.POSITIVE_INFINITY; i++){
//do something
}
Run Code Online (Sandbox Code Playgroud)
此代码是否会按预期运行(永远循环)或在某些时候失败,为什么?
谢谢.