Перечисление RoundingMode
- java.lang.Object
-
- java.lang.Enum<RoundingMode>
-
- java.math.RoundingMode
- Все реализуемые интерфейсы:
-
Serializable,Comparable<RoundingMode>
public enum RoundingMode extends Enum<RoundingMode>
Определяет поведение округления для числовых операций, способных отбрасывать точность. Каждый режим округления указывает, как будет вычисляться наименее значимая возвращаемая цифра округленного результата. Если возвращается меньше цифр, чем цифр, необходимых для представления точного числового результата, отброшенные цифры будут называться отброшенной дробной частью независимо от вклада этих цифр в значение числа. Другими словами, рассматриваемая как числовое значение, отброшенная дробная часть может иметь абсолютное значение больше единицы.
Описание каждого режима округления включает таблицу, показывающую, как разные двузначные десятичные значения округляются до однозначного десятичного значения в соответствии с рассматриваемым режимом округления. Столбец результата в таблицах можно получить, создав 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 | бросить ArithmeticException
|
| 2.5 | 3 | 2 | 3 | 2 | 3 | 2 | 2 | бросить ArithmeticException
|
| 1.6 | 2 | 1 | 2 | 1 | 2 | 2 | 2 | бросить ArithmeticException
|
| 1.1 | 2 | 1 | 2 | 1 | 1 | 1 | 1 | бросить 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 | бросить ArithmeticException
|
| -1.6 | -2 | -1 | -1 | -2 | -2 | -2 | -2 | бросить ArithmeticException
|
| -2.5 | -3 | -2 | -2 | -3 | -3 | -2 | -2 | бросить ArithmeticException
|
| -5.5 | -6 | -5 | -5 | -6 | -6 | -5 | -6 | бросить ArithmeticException
|
Это enum призвано заменить целочисленные перечисления констант режимов округления в BigDecimal (BigDecimal.ROUND_UP, BigDecimal.ROUND_DOWN и т. д.).
- С момента:
- 1.5
- См. также:
-
BigDecimal,MathContext
Константы перечисления
| Константа перечисления | Описание |
|---|---|
CEILING | Режим округления до положительной бесконечности. |
DOWN | Режим округления к нулю. |
FLOOR | Режим округления до отрицательной бесконечности. |
HALF_DOWN | Режим округления до ближайшего соседа, если оба соседа равноудалены, округлять вниз. |
HALF_EVEN | Режим округления к ближайшему соседу, если оба соседа равноудалены, в этом случае округлять к четному соседу. |
HALF_UP | Режим округления до ближайшего соседа, если оба соседа равноудалены, округлять вверх. |
UNNECESSARY | Режим округления, утверждающий, что запрошенная операция имеет точный результат, следовательно, округление не требуется. |
UP | Режим округления от нуля. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
static RoundingMode | valueOf(int rm) | Возвращает объект |
static RoundingMode | valueOf(String name) | Возвращает константу перечисления данного типа с указанным именем. |
static RoundingMode[] | values() | Возвращает массив, содержащий константы этого типа перечисления в порядке их объявления. |
Методы, объявленные в классе java.lang.Enum
clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf Методы, объявленные в классе java.lang.Object
getClass, notify, notifyAll, wait, wait, wait Константы перечисления
ВВЕРХ
public static final RoundingMode 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 |
ВНИЗ
public static final RoundingMode 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 |
ПОТОЛОК
public static final RoundingMode CEILING
Режим округления до положительной бесконечности. Если результат положителен, ведёт себя как в случае RoundingMode.UP; если отрицателен, ведёт себя как в случае RoundingMode.DOWN. Обратите внимание, что этот режим округления никогда не уменьшает вычисленное значение.
Пример:
| Входное число | Входное число, округлённое до одного знака с округлением 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 |
ПОЛ
public static final RoundingMode FLOOR
Режим округления к отрицательной бесконечности. Если результат положителен, ведёт себя как в случае RoundingMode.DOWN; если отрицателен, ведёт себя как в случае RoundingMode.UP. Обратите внимание, что этот режим округления никогда не увеличивает вычисленное значение.
Пример:
| Входное число | Входное число, округлённое до одного знака с округлением 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 |
ПОЛУЧИТЬ_ВВЕРХ
public static final RoundingMode HALF_UP
Режим округления к ближайшему соседу, если оба соседа равноудалены, в этом случае округлять вверх. Ведёт себя как в случае RoundingMode.UP, если отбрасываемая дробная часть ≥ 0,5; в противном случае, ведёт себя как в случае RoundingMode.DOWN. Обратите внимание, что это режим округления, обычно преподающийся в школе.
Пример:
| Входное число | Входное число, округлённое до одного знака с округлением 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 |
ПОЛУЧИТЬ_ВНИЗ
public static final RoundingMode HALF_DOWN
Режим округления к ближайшему соседу, если оба соседа равноудалены, в этом случае округлять вниз. Ведёт себя как в случае RoundingMode.UP если отбрасываемая дробная часть > 0,5; в противном случае, ведёт себя как в случае RoundingMode.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 |
ПОЛУЧИТЬ_ЧЁТНОЕ
public static final RoundingMode HALF_EVEN
Режим округления к ближайшему соседу, если оба соседа равноудалены, в этом случае округлять к чётному соседу. Ведёт себя как в случае RoundingMode.HALF_UP если цифра слева от отбрасываемой дробной части нечётная; ведёт себя как в случае RoundingMode.HALF_DOWN если чётная. Обратите внимание, что этот режим округления статистически минимизирует кумулятивную ошибку при многократном применении в последовательности вычислений. Иногда его называют "округлением по правилам банка", и он в основном используется в США. Этот режим округления аналогичен политике округления, используемой для арифметики float и double в Java.
Пример:
| Входное число | Входное число, округлённое до одного знака с округлением 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 |
НЕОБХОДИМЫЙ
public static final RoundingMode UNNECESSARY
Режим округления, утверждающий, что запрошенное действие имеет точный результат, следовательно, округление не требуется. Если этот режим округления указан для операции, которая даёт неточный результат, выбрасывается ArithmeticException.
Пример:
| Входное число | Входное число, округлённое до одного знака с округлением UNNECESSARY |
|---|---|
| 5,5 | выбросить ArithmeticException
|
| 2,5 | выбросить ArithmeticException
|
| 1,6 | выбросить ArithmeticException
|
| 1,1 | выбросить ArithmeticException
|
| 1,0 | 1 |
| -1,0 | -1 |
| -1,1 | выбросить ArithmeticException
|
| -1,6 | выбросить ArithmeticException
|
| -2,5 | выбросить ArithmeticException
|
| -5,5 | выбросить ArithmeticException
|
Методы
values
public static RoundingMode[] values()
Возвращает массив, содержащий константы этого типа перечисления в порядке их объявления. Этот метод можно использовать для итерации по константам следующим образом:
for (RoundingMode c : RoundingMode.values()) System.out.println(c);
- Возвращает:
- массив, содержащий константы этого типа перечисления в порядке их объявления
valueOf
public static RoundingMode valueOf(String name)
Возвращает константу перечисления этого типа с указанным именем. Строка должна точно совпадать с идентификатором, используемым для объявления константы перечисления в этом типе. (Дополнительные пробельные символы не допускаются.)
- Параметры:
-
name- имя константы перечисления, которая должна быть возвращена. - Возвращает:
- константу перечисления с указанным именем
- Исключения:
-
IllegalArgumentException- если этот тип перечисления не имеет константы с указанным именем -
NullPointerException- если аргумент равен null
valueOf
public static RoundingMode valueOf(int rm)
Возвращает объект RoundingMode, соответствующий константе целочисленного режима округления в BigDecimal.
- Параметры:
-
rm- целочисленный режим округления для преобразования - Возвращает:
-
RoundingModeсоответствующий заданному целому числу. - Исключения:
-
IllegalArgumentException- целое число выходит за пределы диапазона
© 1993, 2020, 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/11/docs/api/java.base/java/math/RoundingMode.html