Aby odpowiedzieć na to konkretne pytanie:
Natknąłem się na nich szukając wartości większej niż co drugi ruch lub niepowodzenie, z wyjątkiem tego największego. Czy albo spełnia te kryteria?
Tak Float.POSITIVE_INFINITY
jest ze swej definicji, jedynym Float
, która jest większa niż Float.MAX_VALUE
. Jest to jednak szczególny przypadek pod względem interakcji z operacjami matematycznymi.
Z javadoc:
public static final float POSITIVE_INFINITY:
Stała posiadania dodatniego nieskończoność typu float. Jest równa wartości zwróconej przez Float.intBitsToFloat (0x7f800000).
public static final float MAX_VALUE:
Stała posiadających największą wartość dodatnią skończoną typu float, (2-2-23) · 2127. Jest równy szesnastkowym liczbom zmiennoprzecinkowym, literowym 0x1.fffffeP + 127f, a także równy Float.intBitsToFloat (0x7f7fffff).
Więc, jak widać, zgodnie z dosłownym definicji jest to, że POSITIVE_INFINITY
jest większa niż MAX_VALUE
o jeden bit.
Pod względem użyteczności, POSITIVE_INFINITY
zapewnia wartość, którą można wykorzystać do rozpoznawania w inny sposób problematycznych wyrażeń matematycznych. Ten używany w źródle JDK to 1.0f/0.0f
. Wynikiem tego wyrażenia jest POSITIVE_INFINITY
, co oznacza, że przekroczyłeś górną granicę rozsądnej matematyki i nigdy nie powrócisz. Biorąc pod uwagę dwie stałe: POSITIVE_INFINITY
i NEGATIVE_INFINITY
, możesz sprawdzić, czy ogólne wyrażenie pozostawiło granice użytecznych zmiennych i czy było to drzwi dodatnie czy ujemne.
MAX_VALUE
, z drugiej strony, przedstawia maksymalną wartość, na której można nadal stosować normalne operacje matematyczne. Na przykład MAX_VALUE - 1.0f
jest (bardzo nieznacznie) mniejszą liczbą niż MAX_VALUE
. POSITIVE_INFINITY - 1.0f
, jednak nadal jest POSITIVE_INFINITY
.
Tak więc, w porównaniu do innych pływaków, Float.POSITIVE_INFINITY będzie zawsze większy? – Adam
@Adam: O ile drugi float nie jest "NaN", tak. ('NaN' nie jest ani większy, ani mniejszy niż równy float.) –
Idealny. Dzięki! – Adam