Ich versuche, BigDecimal-Werte auf zwei Dezimalstellen aufzurunden.
Ich benutze
BigDecimal rounded = value.round(new MathContext(2, RoundingMode.CEILING));
logger.trace("rounded {} to {}", value, rounded);
aber es macht nicht konsequent was ich will:
rounded 0.819 to 0.82
rounded 1.092 to 1.1
rounded 1.365 to 1.4 // should be 1.37
rounded 2.730 to 2.8 // should be 2.74
rounded 0.819 to 0.82
Ich interessiere mich nicht für signifikante Ziffern, ich möchte nur zwei Dezimalstellen. Wie mache ich das mit BigDecimal? Oder gibt es eine andere Klasse / Bibliothek, die besser dafür geeignet ist?
java
math
bigdecimal
rounding
Brad Mace
quelle
quelle
Antworten:
quelle
round()
mit signifikanten Ziffern, währendsetScale
mit einer festen Anzahl von Dezimalstellen gearbeitet wird, oder steckt mehr dahinter?RoundingMode.HALF_UP
. Laut Dokumentation ist es die in Schulen übliche Rundungsmethode - was ich brauchte.setScale(...)
arbeitet? siehe BigDecimal setScale und round .