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