Pro práci s desetinnými čísly je vhodné místo double (více zde) používat BigDecimal. BigDecimal je možné nastavit scale (počet desetinných míst) a roundingMode (způsob zaokrouhlení). V příkladu je uvedeno jen několik způsobů zaokrouhlení. BigDecimal jich je možno nastavit více.
double number = 1.5555; BigDecimal x = new BigDecimal(String.valueOf(number)); BigDecimal y = new BigDecimal(String.valueOf(number)); BigDecimal z = new BigDecimal(String.valueOf(number)); System.out.println("HALF_UP"); System.out.println(x.setScale(3, RoundingMode.HALF_UP)); System.out.println(y.setScale(2, RoundingMode.HALF_UP)); System.out.println(z.setScale(1, RoundingMode.HALF_UP)); System.out.println("HALF_DOWN"); System.out.println(x.setScale(3, RoundingMode.HALF_DOWN)); System.out.println(y.setScale(2, RoundingMode.HALF_DOWN)); System.out.println(z.setScale(1, RoundingMode.HALF_DOWN)); System.out.println("FLOOR"); System.out.println(x.setScale(3, RoundingMode.FLOOR)); System.out.println(y.setScale(2, RoundingMode.FLOOR)); System.out.println(z.setScale(1, RoundingMode.FLOOR)); System.out.println("CEILING"); System.out.println(x.setScale(3, RoundingMode.CEILING)); System.out.println(y.setScale(2, RoundingMode.CEILING)); System.out.println(z.setScale(1, RoundingMode.CEILING));
Výsledek:
HALF_UP 1.556 1.56 1.6 HALF_DOWN 1.555 1.56 1.6 FLOOR 1.555 1.55 1.5 CEILING 1.556 1.56 1.6