Jakie są stałe INFINITY w Javie?
Niedawno natknąłem się na stałe w klasach opakowujących typu pierwotnego, takich jakDouble.POSITIVE_INFINITY
iDouble.NEGATIVE_INFINITY
. W interfejsie API definiuje pierwsze jako:
Stałe utrzymywanie dodatniej nieskończoności typu podwójnego. Jest równy wartości zwróconej przez Double.longBitsToDouble (0x7ff0000000000000L).
Inni mają definicje na tych samych zasadach.
To, z czym mam problem, to zrozumienieco te stałe są w rzeczywistości. Tak naprawdę nie mogąbyć lubprzedstawiać nieskończoność dodatnia / ujemna, ponieważ system jest z natury skończony. Czy jest to tylko dowolne ustawienie bitów, które twórcy Javy uznali za nieskończoność? Czy może mają one jakąś specjalną wartość? Jeśli tojest tylko dowolny ciąg bitów interpretowany jakodouble
, czy jest tam jakaś normalna liczba, gdy jest interpretowana jakodouble
wróciPOSITIVE_INFINITY
zamiast jakiejkolwiek faktycznie oczekiwanej wartości?
Wybacz mi, jeśli odpowiedź na to jest oczywista, biorąc pod uwagęDouble.longBitsToDouble(0x7ff0000000000000L)
część API. Prawdę mówiąc, opis ten jest dla mnie dość tajemniczy i nie będę udawać, że rozumiem, co naprawdę oznaczają lub reprezentują wartości szesnastkowe.