Автор оригинала: 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)); } }