2015-05-11 9 views
5

Beispiel:Wie ein BigDecimal Wert auf seinen nächsten Hundertstel Runden

public class Round { 

    private static final BigDecimal TWELVE = new BigDecimal("12"); 
    public static void main(String[] args) { 

     BigDecimal annualAmt = new BigDecimal("55867.59"); 
     BigDecimal monthlyAmt = null; 

     monthlyAmt = annualAmt.divide(TWELVE, 0, RoundingMode.HALF_UP); 
     System.out.println(monthlyAmt); 
    } 
} 

Das obige Programm ausgegeben wird, 4656. I, da dies auf das nächste Hundertstel runden möchten 4700.

Ähnlich 4235 -> 4200

Antwort

9

Um eine gegebene BigDecimal auf die nächsten hundert Runden zu runden, verwenden Sie monthlyAmt = monthlyAmt.setScale(-2, RoundingMode.HALF_EVEN) (oder ersetzen Sie den entsprechenden Rundungsmodus).

+0

ich einen Anruf zu 'toPlainString hinzufügen würde()', sonst ist der Ausgang '4,7E + 3'. – rgettman

+0

Ja, es gibt den Exponentenwert. Call toPlainString() gibt einen Typenkonfliktfehler. Ich möchte hier ein großes Dedezimal zurückgeben. monthlyAmt sollte BigDecimal sein. – CoolSpring

+0

Wenn 'monthlyAmt' ein' BigDecimal' sein sollte, dann ist die Antwort, die ich Ihnen gegeben habe, korrekt und Sie sollten keine anderen Methoden aufrufen. –

-1

Sie können versuchen, diese Rundung Formelberechnung für Integer zu verwenden:

res = ((number + factor - 1)/factor) * factor; 
Verwandte Themen