Wenn ich anrufe, ist Math.ceil(5.2)die Rückgabe die double 6.0. Meine natürliche Neigung war zu denken, dass a zurückkehren Math.ceil(double a)würde long. Aus der Dokumentation:
ceil(double a)Gibt den kleinsten
doubleWert (der der negativen Unendlichkeit am nächsten kommt) zurück , der nicht kleiner als das Argument ist und einer mathematischen Ganzzahl entspricht.
Aber warum doubleeher a als a zurückgeben, longwenn das Ergebnis eine ganze Zahl ist? Ich denke, das Verständnis des Grundes könnte mir helfen, Java ein bisschen besser zu verstehen. Es könnte mir auch helfen herauszufinden, ob ich mich selbst in Schwierigkeiten bringen werde, indem ich auf ein longz
long b = (long)Math.ceil(a);
immer was ich denke es sollte sein? Ich befürchte, es könnte einige Grenzfälle geben, die problematisch sind.