2012-03-26 7 views
2

Wie würde ich KORREKT einen BigDecimal auf den nächsten ganzen Wert runden?Round BigDecimal auf den nächsten Integralwert

Zum Beispiel

1.2 --> 1 

1.5 --> 2 

1.6 --> 2. 

Ich versuchte

BigDecimal val = new BigDecimal(1.5); 
System.out.println(val.setScale(0, RoundingMode.HALF_UP)) 

Aber das gibt mir immer noch 1. NOT 2 als erwartet.

Hat jemand zufällig wissen, wie man das richtig macht?

Dank

+4

[Ihr genauen Code ist 2 für mich auf ideone] (http://ideone.com/AoQnQ), es muss etwas anderes sein, das du tust, das ist falsch. – dasblinkenlight

+0

funktioniert auch für mich. – gorjusborg

+0

Multiplizieren Sie Ihre Zahl mit 10 mit der Anzahl der Dezimalstellen, die Sie vor dem Runden als Test tragen. In Ihrem Beispiel würden Sie mit 10 multiplizieren. Dies zeigt Ihnen, welche Nummer Sie in setScale verwenden. –

Antwort

4
BigDecimal val = new BigDecimal(1.2); 
    System.out.println(val.setScale(0, RoundingMode.HALF_UP)); 
    val = new BigDecimal(1.5); 
    System.out.println(val.setScale(0, RoundingMode.HALF_UP)); 
    val = new BigDecimal(1.6); 
    System.out.println(val.setScale(0, RoundingMode.HALF_UP)); 

Ergebnis:

Ich sehe nicht, wo das Problem Ausgänge

+0

Sorry, macht nichts. Das Problem kam von einem anderen Ort. Und ja, die Methode funktioniert gut. –