Недавно я столкнулся с константами в классах примитивного типа, таких как Double.POSITIVE_INFINITY
и Double.NEGATIVE_INFINITY
. В API он определяет первый как:
Постоянная, содержащая положительную бесконечность типа double. Он равен значению, возвращаемому Double.longBitsToDouble(0x7ff0000000000000L).
Другие имеют определения вдоль этих же строк.
У меня возникают проблемы с пониманием того, что эти константы на самом деле. Они фактически не могут быть или представлять положительные/отрицательные бесконечности, потому что система по своей природе является конечной. Это просто какая-то произвольная установка бит, которую, по мнению разработчиков Java, определит понятие бесконечности? Или у них действительно есть какая-то особая ценность? Если это просто произвольная строка бит, интерпретируемая как double
, то есть ли там какое-то нормальное число, которое, если интерпретируется как double
, вернет POSITIVE_INFINITY
вместо того, что действительно ожидалось?
Простите меня, если ответ на это очевиден с учетом части Double.longBitsToDouble(0x7ff0000000000000L)
API. По правде говоря, это описание довольно загадочно для меня, и я не буду притворяться, что понимаю, что означают или представляют значения шестнадцатеричных значений.