РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
640 of 1163 menu

Класс RoundingMode

Класс RoundingMode - это перечисление (enum), которое определяет способы округления чисел в классе BigDecimal. Оно приходит на смену устаревшим константам BigDecimal.ROUND_* и используется в методах setScale и divide, когда необходимо задать правило отбрасывания лишних разрядов. Перечисление содержит восемь констант, каждая из которых описывает свой алгоритм округления.

Синтаксис

RoundingMode.UP RoundingMode.DOWN RoundingMode.CEILING RoundingMode.FLOOR RoundingMode.HALF_UP RoundingMode.HALF_DOWN RoundingMode.HALF_EVEN RoundingMode.UNNECESSARY

Константы UP и DOWN округляют в сторону от нуля и к нулю соответственно. CEILING округляет в сторону положительной бесконечности, FLOOR - в сторону отрицательной. Константы HALF_UP, HALF_DOWN и HALF_EVEN работают с половиной разряда, а UNNECESSARY выбрасывает исключение, если округление требуется.

Пример

Давайте округлим число 12345 до двух знаков после запятой разными способами:

import java.math.BigDecimal; import java.math.RoundingMode; public class Main { public static void main(String[] args) { BigDecimal num = new BigDecimal("123.456"); BigDecimal up = num.setScale(2, RoundingMode.UP); BigDecimal down = num.setScale(2, RoundingMode.DOWN); BigDecimal halfUp = num.setScale(2, RoundingMode.HALF_UP); BigDecimal halfEven = num.setScale(2, RoundingMode.HALF_EVEN); System.out.println("UP: " + up); System.out.println("DOWN: " + down); System.out.println("HALF_UP: " + halfUp); System.out.println("HALF_EVEN: " + halfEven); } }

Результат выполнения кода:

"UP: 123.46" "DOWN: 123.45" "HALF_UP: 123.46" "HALF_EVEN: 123.46"

Пример

Давайте посмотрим, как работает RoundingMode.UNNECESSARY, когда округление не требуется:

import java.math.BigDecimal; import java.math.RoundingMode; public class Main { public static void main(String[] args) { BigDecimal num = new BigDecimal("123.45"); try { BigDecimal res = num.setScale(2, RoundingMode.UNNECESSARY); System.out.println(res); } catch (ArithmeticException e) { System.out.println("Rounding necessary"); } } }

Результат выполнения кода:

"123.45"

Пример

Давайте разделим одно число на другое, указав режим округления HALF_DOWN:

import java.math.BigDecimal; import java.math.RoundingMode; public class Main { public static void main(String[] args) { BigDecimal a = new BigDecimal("10"); BigDecimal b = new BigDecimal("3"); BigDecimal res = a.divide(b, 4, RoundingMode.HALF_DOWN); System.out.println(res); } }

Результат выполнения кода:

"3.3333"

Смотрите также

  • класс BigDecimal,
    который представляет десятичные числа
  • метод setScale,
    который задаёт масштаб числа
  • метод divide,
    который делит одно число на другое
  • метод valueOf,
    который создаёт BigDecimal из примитивов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить