Warum gibt Math.ceil ein Double zurück?
Wenn ich rufe Math.ceil(5.2)
die Rückkehr ist double
6.0
. Meine Natürliche Neigung war, zu denken, dass Math.ceil(double a)
zurückkehren würde eine long
. Aus der Dokumentation:
ceil(double a)
Gibt den kleinsten (nahe negativ unendlich)
double
Wert
das ist nicht weniger als das argument und gleich einer mathematischen
integer.
Aber warum zurückgeben double
eher als eine long
wenn das Ergebnis ein integer? Ich denke, Verständnis ist der Grund dahinter könnte mir helfen, zu verstehen, Java ein bisschen besser. Es könnte auch mir helfen, herauszufinden, ob ich werde mich in Schwierigkeiten durch Gießen zu einem long
ist, z.B.
long b = (long)Math.ceil(a);
immer was ich denke es sein sollte? Ich fürchte, es könnte eine Grenze Fälle, die problematisch sind.
InformationsquelleAutor der Frage PengOne | 2011-09-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bereich von
double
ist größer als die vonlong
. Zum Beispiel:Was würden Sie erwarten, dass die Letzte Zeile ist zu tun, wenn
Math.ceil
zurückgegebenlong
?Beachten Sie, dass bei sehr großen Werten (positiv oder negativ) die zahlen am Ende verteilt wird, sehr Dünn - so dass die nächste Ganzzahl, die größer als integer
x
nichtx + 1
wenn Sie sehen, was ich meine.InformationsquelleAutor der Antwort Jon Skeet
Doppel kann größer sein, als
Long.MAX_VALUE
. Wenn Sie anrufenMath.ceil()
auf so einen Wert würde man erwarten, dass den gleichen Wert zurückgeben. Aber wenn es wieder ein langer, der Wert wäre falsch.InformationsquelleAutor der Antwort Peter Lawrey