Zaokrouhlování v Javě pomocí BigDecimal

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

Napsat komentář