Ja und nein. Ja, denn in einem abstrakten Sinn ist die Unendlichkeit die Unendlichkeit (und, wie ich unten erläutere, werden für die meisten Code-Floats ohnehin in Doubles konvertiert).
Nein, jedoch, weil auf der Bit-Ebene die beiden Unendlichkeiten unterschiedlich sind. Ein Double ist 64 Bit in Java und ein Float ist 32 Bit in Java, so trivial sind sie auf der Darstellungsebene unterschiedlich.
In Java werden Fließkommazahlen (floats und doubles) mit dem Gleitkommaformat IEEE 754 dargestellt. Dies ist der Standard, den heutzutage fast jeder verwendet. Jede Zahl wird als Vorzeichenbit in Binärform dargestellt, zuzüglich einer bestimmten Anzahl von Exponentenbits plus einer bestimmten Anzahl von Mantissenbits (Signifikanden). In einem Float oder einem Double wird positive Unendlichkeit mit einem Vorzeichenbit von 0, Exponentenbits alle 1 und Mantissenbits alle 0 dargestellt. Negative Unendlichkeit wird auf die gleiche Weise dargestellt, außer dass das Vorzeichenbit 1 ist zwei sehr ähnliche Wege, aber wegen der unterschiedlichen Anzahl von Exponenten und Mantissen-Bits zwischen Floats und Doubles sind die Bit-Level-Muster unterschiedlich.
Zum Schreiben von Code können Sie sie als gleich behandeln. Wann immer Sie doubles und floats zusammen benutzen, außer Sie sagen explizit anders, wird der float automatisch in ein double umgewandelt und der Ausdruck wird zu einem double führen, so dass sich eine Float Unendlichkeit für die meisten praktischen Zwecke wie eine doppelte Unendlichkeit verhält.
ich sehe. Und die 'Double.compare (double, double)' Methode wäre schlau (oder vielleicht dumm?) Genug, um 0 für 'Double.compare (Float.POSITIVE_INFINITY, Double.POSITIVE_INFINITY)' zurückzugeben? – user113454
@ user1064918 Das hat nichts mit 'Double zu tun.vergleichen (doppelt, doppelt) '. Wie ich in meiner Antwort darauf anspreche, wo immer ein Double erwartet wird und ein Float geliefert wird, wird der Float automatisch auf ein Double gewandelt, so dass 'Double.compare (double, double)' nur zwei Doubles sieht. Die * JVM und die Hardware * sind intelligent genug, um 32-Bit-Unendlichkeit (Float) zu erkennen und diese in 64-Bit-Unendlichkeit (doppelt) umzuwandeln. –
Das macht Sinn. Danke – user113454