Перечисление 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 Постоянные значения перечисления
UP
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 |
DOWN
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 |
CEILING
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 |
FLOOR
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 |
HALF_UP
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 |
HALF_DOWN
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 |
HALF_EVEN
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 |
UNNECESSARY
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.