Spec-Zone.ru › OpenJDK 25

Класс перечисления RoundingMode

java.lang.Object
java.lang.Enum<RoundingMode>
java.math.RoundingMode
Все реализованные интерфейсы:
Serializable, Comparable<RoundingMode>, Constable
public enum RoundingMode extends Enum<RoundingMode>
Задает политику округления для числовых операций, которые могут отбрасывать точность. Каждый режим округления определяет, как вычисляется младший значащий возвращаемый разряд округленного результата. Если возвращается меньше разрядов, чем требуется для представления точного числового результата, отброшенные разряды называются отброшенной дробной частью, независимо от их вклада в значение числа. Иными словами, если рассматривать ее как числовое значение, абсолютная величина отброшенной дробной части может быть больше единицы.

В более общем случае политика округления задает отображение множества вещественных чисел в подмножество представимых значений. Для BigDecimal представимые значения зависят от используемой при вычислении точности. Если математический результат находится в пределах диапазона экспоненты BigDecimal, он будет точно представим с заданной точностью результата либо окажется между двумя соседними представимыми значениями. Если он находится между двумя представимыми значениями, политика округления определяет, какое из этих двух ограничивающих значений станет результатом. Для вещественных чисел в пределах диапазона политика округления при заданном наборе представимых значений отображает непрерывный отрезок числовой прямой в одно представимое значение; при этом вещественное число, численно равное представимому значению, отображается в это значение.

В описании каждого режима округления приведена таблица, показывающая, как различные десятичные числа с двумя разрядами округляются до десятичного числа с одним разрядом в соответствующем режиме. Результаты в столбце можно получить, создав число BigDecimal с указанным значением, создав объект MathContext с нужными настройками (precision равен 1, а roundingMode установлен в нужный режим округления) и вызвав для этого числа round с соответствующим MathContext. Ниже приведена сводная таблица результатов этих операций округления для всех режимов.

Сводная таблица операций округления в различных режимах
Входное число Результат округления входного числа до одного разряда в указанном режиме округления
UP DOWN CEILING FLOOR HALF_UP HALF_DOWN HALF_EVEN UNNECESSARY
5.5 6 5 6 5 6 5 6 throw ArithmeticException
2.5 3 2 3 2 3 2 2 throw ArithmeticException
1.6 2 1 2 1 2 2 2 throw ArithmeticException
1.1 2 1 2 1 1 1 1 throw ArithmeticException
1.0 1 1 1 1 1 1 1 1
-1.0 -1 -1 -1 -1 -1 -1 -1 -1
-1.1 -2 -1 -1 -2 -1 -1 -1 throw ArithmeticException
-1.6 -2 -1 -1 -2 -2 -2 -2 throw ArithmeticException
-2.5 -3 -2 -2 -3 -3 -2 -2 throw ArithmeticException
-5.5 -6 -5 -5 -6 -6 -5 -6 throw ArithmeticException

Этот enum предназначен для замены перечисления констант режимов округления на основе целых чисел в BigDecimal (BigDecimal.ROUND_UP, BigDecimal.ROUND_DOWN и т. д.).

Примечание к API:
Пять режимов округления, объявленных в этом классе, соответствуют атрибутам направления округления, определенным в стандарте IEEE для арифметики с плавающей запятой. Если такое соответствие имеется, оно отмечено в документации соответствующей константы.
См. Спецификацию языка Java:
15.4 Выражения с плавающей запятой
Начиная с версии:
1.5
Внешние спецификации
  • Стандарт IEEE для арифметики с плавающей запятой
См. также:
  • BigDecimal
  • MathContext

Краткое описание вложенных классов

Вложенные классы и интерфейсы, объявленные в классе Enum

Enum.EnumDesc<E>

Краткое описание констант перечисления

Константа перечисления Описание
CEILING
Режим округления в сторону положительной бесконечности.
DOWN
Режим округления в сторону нуля.
FLOOR
Режим округления в сторону отрицательной бесконечности.
HALF_DOWN
Режим округления в сторону «ближайшего соседа», а если оба соседа равноудалены — вниз.
HALF_EVEN
Режим округления в сторону «ближайшего соседа», а если оба соседа равноудалены — в сторону четного соседа.
HALF_UP
Режим округления в сторону «ближайшего соседа», а если оба соседа равноудалены — вверх.
UNNECESSARY
Режим округления, утверждающий, что запрошенная операция дает точный результат и поэтому округление не требуется.
UP
Режим округления от нуля.

Краткое описание методов

Модификатор и тип Метод Описание
static RoundingMode valueOf(int rm)
Возвращает объект RoundingMode, соответствующий устаревшей целочисленной константе режима округления в BigDecimal.
static RoundingMode valueOf(String name)
Возвращает константу перечисления этого класса с указанным именем.
static RoundingMode[] values()
Возвращает массив, содержащий константы этого класса перечисления в порядке их объявления.

Методы, объявленные в классе Enum

clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf

Методы, объявленные в классе Object

getClass, notify, notifyAll, wait, wait, wait

Подробное описание констант перечисления

UP

public static final RoundingMode UP
Режим округления от нуля. Всегда увеличивает разряд перед ненулевой отброшенной дробной частью. Обратите внимание, что этот режим округления никогда не уменьшает абсолютную величину вычисленного значения.

Пример:

Примеры режима округления UP
Входное число Входное число, округленное до одного разряда
с округлением UP
5.5 6
2.5 3
1.6 2
1.1 2
1.0 1
-1.0 -1
-1.1 -2
-1.6 -2
-2.5 -3
-5.5 -6

DOWN

public static final RoundingMode DOWN
Режим округления в сторону нуля. Никогда не увеличивает разряд перед отброшенной дробной частью (то есть отсекает ее). Обратите внимание, что этот режим округления никогда не увеличивает абсолютную величину вычисленного значения.
Примечание к API:
Этот режим округления аналогичен политике округления, используемой для операторов остатка и преобразования в целое значение в float и double (JLS 15.4). Этот режим соответствует атрибуту направления округления IEEE 754 roundTowardZero.

Пример:

Примеры режима округления DOWN
Входное число Входное число, округленное до одного разряда
с округлением DOWN
5.5 5
2.5 2
1.6 1
1.1 1
1.0 1
-1.0 -1
-1.1 -1
-1.6 -1
-2.5 -2
-5.5 -5

CEILING

public static final RoundingMode CEILING
Режим округления в сторону положительной бесконечности. Для положительного результата ведет себя как RoundingMode.UP; для отрицательного — как RoundingMode.DOWN. Обратите внимание, что этот режим округления никогда не уменьшает вычисленное значение. Этот режим соответствует атрибуту направления округления IEEE 754 roundTowardPositive.

Пример:

Примеры режима округления CEILING
Входное число Входное число, округленное до одного разряда
с округлением CEILING
5.5 6
2.5 3
1.6 2
1.1 2
1.0 1
-1.0 -1
-1.1 -1
-1.6 -1
-2.5 -2
-5.5 -5

FLOOR

public static final RoundingMode FLOOR
Режим округления в сторону отрицательной бесконечности. Для положительного результата ведет себя как RoundingMode.DOWN; для отрицательного — как RoundingMode.UP. Обратите внимание, что этот режим округления никогда не увеличивает вычисленное значение. Этот режим соответствует атрибуту направления округления IEEE 754 roundTowardNegative.

Пример:

Примеры режима округления FLOOR
Входное число Входное число, округленное до одного разряда
с округлением FLOOR
5.5 5
2.5 2
1.6 1
1.1 1
1.0 1
-1.0 -1
-1.1 -2
-1.6 -2
-2.5 -3
-5.5 -6

HALF_UP

public static final RoundingMode HALF_UP
Режим округления в сторону «ближайшего соседа», а если оба соседа равноудалены — вверх. При отброшенной дробной части ≥ 0.5 ведет себя как RoundingMode.UP; в противном случае — как RoundingMode.DOWN. Обратите внимание, что именно этот режим округления обычно преподают в школе. Этот режим соответствует атрибуту направления округления IEEE 754 roundTiesToAway.

Пример:

Примеры режима округления HALF_UP
Входное число Входное число, округленное до одного разряда
с округлением HALF_UP
5.5 6
2.5 3
1.6 2
1.1 1
1.0 1
-1.0 -1
-1.1 -1
-1.6 -2
-2.5 -3
-5.5 -6

HALF_DOWN

public static final RoundingMode HALF_DOWN
Режим округления в сторону «ближайшего соседа», а если оба соседа равноудалены — вниз. При отброшенной дробной части > 0.5 ведет себя как RoundingMode.UP; в противном случае — как RoundingMode.DOWN.

Пример:

Примеры режима округления HALF_DOWN
Входное число Входное число, округленное до одного разряда
с округлением HALF_DOWN
5.5 5
2.5 2
1.6 2
1.1 1
1.0 1
-1.0 -1
-1.1 -1
-1.6 -2
-2.5 -2
-5.5 -5

HALF_EVEN

public static final RoundingMode HALF_EVEN
Режим округления в сторону «ближайшего соседа», а если оба соседа равноудалены — в сторону четного соседа. Если разряд слева от отброшенной дробной части нечетный, ведет себя как RoundingMode.HALF_UP; если он четный — как RoundingMode.HALF_DOWN.
Примечание к API:
При многократном применении в последовательности вычислений этот режим округления статистически минимизирует накопленную ошибку. Иногда его называют «банковским округлением»; он используется главным образом в США. Этот режим округления аналогичен политике округления, применяемой для большинства арифметических операторов float и double в Java (JLS 15.4). Этот режим соответствует атрибуту направления округления IEEE 754 roundTiesToEven.

Пример:

Примеры режима округления HALF_EVEN
Входное число Входное число, округленное до одного разряда
с округлением HALF_EVEN
5.5 6
2.5 2
1.6 2
1.1 1
1.0 1
-1.0 -1
-1.1 -1
-1.6 -2
-2.5 -2
-5.5 -6

UNNECESSARY

public static final RoundingMode UNNECESSARY
Режим округления, утверждающий, что запрошенная операция дает точный результат и поэтому округление не требуется. Если этот режим округления указан для операции, которая дает неточный результат, выбрасывается ArithmeticException.

Пример:

Примеры режима округления UNNECESSARY
Входное число Входное число, округленное до одного разряда
с округлением UNNECESSARY
5.5 throw ArithmeticException
2.5 throw ArithmeticException
1.6 throw ArithmeticException
1.1 throw ArithmeticException
1.0 1
-1.0 -1
-1.1 throw ArithmeticException
-1.6 throw ArithmeticException
-2.5 throw ArithmeticException
-5.5 throw ArithmeticException

Подробное описание методов

values

public static RoundingMode[] values()
Возвращает массив, содержащий константы этого класса перечисления в порядке их объявления.
Возвращает:
массив, содержащий константы этого класса перечисления в порядке их объявления

valueOf

public static RoundingMode valueOf(String name)
Возвращает константу перечисления этого класса с указанным именем. Строка должна точно совпадать с идентификатором, использованным для объявления константы перечисления в этом классе. (Лишние пробельные символы не допускаются.)
Параметры:
name — имя возвращаемой константы перечисления.
Возвращает:
константу перечисления с указанным именем
Вызывает исключение:
IllegalArgumentException — если в этом классе перечисления нет константы с указанным именем
NullPointerException — если аргумент равен null

valueOf

public static RoundingMode valueOf(int rm)
Возвращает объект RoundingMode, соответствующий устаревшей целочисленной константе режима округления в BigDecimal.
Параметры:
rm — устаревший целочисленный режим округления для преобразования
Возвращает:
RoundingMode, соответствующий заданному целому числу.
Вызывает исключение:
IllegalArgumentException — целое число находится вне допустимого диапазона

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, которая содержит более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/math/RoundingMode.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API