2012-06-14 7 views
9

Angenommen, ich möchte float zu int in Java aufrunden.
Zum BeispielWarum gibt es in Java keine Ceil (Float)?

roundUp(0.2) = 1 
roundUp(0.7) = 1 
roundUp(1.3) = 2 
... 

würde Ich mag Math.ceil und Math.round nennen, das zu tun, aber java.lang.Math nicht ceil(float) bietet. Es bietet nur ceil(double). So ist mein float zu double gefördert leise, ceil(double) kehrt double und round(double) kehrt long während ich muss aufrunden float zu int (nicht long).

Jetzt frage ich mich, warum java.lang.Math nur ceil(double) hat und ceil(float) nicht hat.

+3

Ich bemerke mit ein wenig Vergnügen, dass die Zahlen in Ihren Beispielen Doppel sind, nicht schwimmt! –

Antwort

15

Sie tun können:

value = (int) Math.ceil(value); 

Wenn Sie wissen, dass value ein Schwimmer ist, dann können Sie das Ergebnis zurück an float oder int gegossen.

Es macht keinen Sinn, dass die Java-Bibliothek sowohl ceil(float) als auch ceil(double) bereitstellt, da alle Float-Argumente mit demselben Ergebnis an die ceil(double)-Methode übergeben werden können.

+1

+1 oder 'int intValue = (int) Math.ceil (Wert);' –

+0

@PeterLawrey: Danke, ich habe die Antwort aktualisiert, da es sich in der Tat um ein 'int' handelt. –

+0

Ich möchte Castings vermeiden. Es sieht nicht sicher aus. – Michael

Verwandte Themen