Автор оригинала: Pankaj Kumar.
Иногда при работе с double и поплавками нам нужно округлить их до определенных десятичных знаков для вычисления. Например, магазины округляют конечную цену до 2 знаков после запятой с режимом округления наполовину вверх.
До Java 5 класс DecimalFormat использовался для округления, но работа с ним не соответствовала числам и не предоставляла много возможностей. Таким образом, Java 5 представила Режим округления | перечисление и BigDecimal класс был расширен, чтобы использовать режим округления для получения практически любого типа округления, которое вы хотите.
Использование BigDecimal в режиме округления похоже на то, что вы работаете с десятичными дробями, и оно очень простое в использовании. Вот пример программы, показывающий ее использование.
package com.journaldev.misc;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
public class RoundingExample {
public static void main(String[] args) {
double l = 100.34567890;
//similar like RegEx but don't have much options
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(l));
//2 decimal places rounding with half up rounding mode
System.out.println(BigDecimal.valueOf(l).setScale(2, RoundingMode.HALF_UP));
//3 decimal places rounding with ceiling rounding mode
System.out.println(BigDecimal.valueOf(l).setScale(3, RoundingMode.CEILING));
System.out.println(BigDecimal.valueOf(l).setScale(0, RoundingMode.CEILING));
//integer rounding with floor rounding mode
System.out.println(BigDecimal.valueOf(l).setScale(0, RoundingMode.FLOOR));
}
}