Перечисление 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)

Возвращает объект RoundingMode , соответствующий константе целочисленного режима округления в BigDecimal.

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

Spec-Zone .ru
спецификации, руководства, описания, API