Java Runden Sie eine beliebige Zahl auf


146

Ich kann anscheinend keine Antwort auf eine einfache Frage finden: Wie runde ich eine Zahl auf die nächste auf int?

Wenn zum Beispiel die Zahl 0,2, 0,7, 0,2222, 0,4324, 0,99999 ist, möchte ich, dass das Ergebnis 1 ist.

Soweit habe ich

int b = (int) Math.ceil(a / 100);

Es scheint jedoch nicht den Job zu machen.


Warum teilen Sie in Ihrem Beispielcode durch 100?
— Jon Skeet

14
Ich wette, Sie haben aeinen ganzzahligen Typ.
— Nikita Rybak

1
Ja, dein Recht ist ein int ... danke, dass du darauf hingewiesen hast. 100.0 hat es für mich sortiert.
— Stevanicus

1
Ich vermute, was er will, ist eine / 100 aufgerundet, aber ja, die Frage könnte eine Klarstellung gebrauchen.
— Jay

1
HINWEIS: Bei dieser Frage werden bessere Antworten gegeben.
— Martijnn2008

Antworten:


289

Math.ceil()ist die richtige Funktion zum Aufrufen. Ich vermute, es aist eine int, die a / 100eine ganzzahlige Arithmetik durchführen würde. Versuchen Sie es Math.ceil(a / 100.0)stattdessen.

int a = 142;
System.out.println(a / 100);
System.out.println(Math.ceil(a / 100));
System.out.println(a / 100.0);
System.out.println(Math.ceil(a / 100.0));
System.out.println((int) Math.ceil(a / 100.0));

Ausgänge:

1
1.0
1.42
2.0
2

Siehe http://ideone.com/yhT0l


3
Dies nur, wenn "a" doppelt ist
— L.Grillo

^^ "a" muss ein Double sein oder ein Double werfen.
— Codeversed

1
aist ein intin diesem Beispiel, und es funktioniert wie vorgeschlagen. Wenn dabei int / floatdas Ergebnis ist ein float, wie in der Ausgabe unter Beweis gestellt. Probieren Sie den Link aus.
— Dantiston

16

Ich weiß nicht, warum Sie durch 100 teilen, aber hier meine Annahme int a;

int b = (int) Math.ceil( ((double)a) / 100);

oder

int b = (int) Math.ceil( a / 100.0);

11
int RoundedUp = (int) Math.ceil(RandomReal);

Dies schien den perfekten Job zu machen. Arbeitete jedes Mal.


2

10 Jahre später hat mich dieses Problem immer noch erwischt.

Das ist also die Antwort auf diejenigen, die zu spät sind wie ich.

Das funktioniert nicht

int b = (int) Math.ceil(a / 100);

Das Ergebnis a / 100ist eine ganze Zahl und gerundet, sodass Math.ceil nichts dagegen tun kann.

Sie müssen dabei die gerundete Operation vermeiden

int b = (int) Math.ceil((float) a / 100);

Jetzt gehts.


0

Der einfachste Weg, dies zu tun, ist einfach: Sie erhalten einen Float oder Double und möchten, dass er in die nächste Aufrundung umgewandelt wird. Dann funktioniert System.out.println((int)Math.ceil(yourfloat)); es einfach perfekt


-3

Angenommen, a ist doppelt und wir brauchen eine gerundete Zahl ohne Dezimalstelle. Verwenden Sie die Funktion Math.round ().
Das ist meine Lösung.

double a = 0.99999;
int rounded_a = (int)Math.round(a);
System.out.println("a:"+rounded_a );

Output : 
a:1

1
Dies ist eine falsche Antwort, da hier gefragt wird, ob a = 0,2
— aufgerundet
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.