Spec-Zone.ru › OpenJDK 21

Класс BigDecimal

java.lang.Object
java.lang.Number
java.math.BigDecimal
Все реализованные интерфейсы:
Serializable, Comparable<BigDecimal>
public class BigDecimal extends Number implements Comparable<BigDecimal>
Неизменяемые, десятичные числа со произвольной точностью и знаком. Объект BigDecimal состоит из целого числа произвольной длины немасштабированное значение и 32-битного целого числа масштаб. Если масштаб равен нулю или положителен, он представляет количество цифр справа от десятичной точки. Если масштаб отрицателен, немасштабированное значение числа умножается на десять в степени, равной по модулю масштабу. Значение числа, представленного объектом BigDecimal, следовательно, равно (unscaledValue × 10-scale).

Класс BigDecimal предоставляет операции для арифметических вычислений, изменения масштаба, округления, сравнения, хэширования и преобразования форматов. Метод toString() обеспечивает каноническое представление объекта BigDecimal.

Класс BigDecimal предоставляет пользователю полный контроль над поведением округления. Если режим округления не указан и точный результат не может быть представлен, выбрасывается ArithmeticException; в противном случае вычисления можно проводить с заданной точностью и режимом округления, передав соответствующий объект MathContext в операцию. В любом случае, доступно восемь режимов округления. Использование целочисленных полей в этом классе (таких как ROUND_HALF_UP) для представления режима округления устарело; вместо этого следует использовать значения перечисления класса RoundingMode enum, (такие как RoundingMode.HALF_UP).

При передаче объекта MathContext с настройкой точности 0 (например, MathContext.UNLIMITED), арифметические операции точные, как и арифметические методы, которые не принимают объект MathContext. Вследствие вычисления точного результата, настройка режима округления объекта MathContext с настройкой точности 0 не используется и поэтому не имеет значения. В случае деления точный частный может иметь бесконечное десятичное разложение; например, 1 деленное на 3. Если частный имеет непериодическое десятичное разложение и операция задана для возвращения точного результата, выбрасывается ArithmeticException. В противном случае возвращается точный результат деления, как и для других операций.

Когда настройка точности не равна 0, правила арифметики с плавающей точкой в целом совместимы с выбранными режимами арифметики, определёнными в ANSI X3.274-1996 и ANSI X3.274-1996/AM 1-2000 (раздел 7.4). В отличие от этих стандартов, BigDecimal включает множество режимов округления. Любые конфликты между этими стандартами ANSI и спецификацией BigDecimal разрешаются в пользу BigDecimal.

Поскольку одно и то же числовое значение может иметь разные представления (с разными масштабами), правила арифметики и округления должны указывать как числовой результат, так и масштаб, используемый в представлении результата. Разные представления одного и того же числового значения называются членами одного и того же когорты. Естественный порядок BigDecimal рассматривает члены одной и той же когорты как равные друг другу. В отличие от этого, метод equals требует, чтобы и числовое значение, и представление были одинаковыми для равенства. Результаты методов, таких как scale и unscaledValue(), будут отличаться для численно равных значений с разными представлениями.

В общем, режимы округления и настройка точности определяют, как операции возвращают результаты с ограниченным числом цифр, когда точный результат имеет больше цифр (возможно, бесконечно много в случае деления и извлечения квадратного корня), чем число возвращаемых цифр. Во-первых, общее количество цифр для возврата задаётся настройкой точности объекта MathContext; это определяет точность результата. Счёт цифр начинается с самой левой ненулевой цифры точного результата. Режим округления определяет, как любые отброшенные последующие цифры влияют на возвращаемый результат.

Для всех арифметических операторов операция выполняется так, как будто сначала вычисляется точный промежуточный результат, а затем он округляется до заданного числа цифр (при необходимости) с использованием выбранного режима округления. Если точный результат не возвращается, некоторые позиции цифр точного результата отбрасываются. При округлении, увеличивающем величину возвращаемого результата, возможно создание новой позиции цифры за счёт переноса в ведущую цифру "9". Например, округляя значение 999,9 до трёх знаков с округлением вверх, численно равно одной тысяче, представленной как 100×101. В таких случаях новая "1" — это ведущая позиция цифры возвращаемого результата.

Для методов и конструкторов с параметром MathContext если результат неточен, но режим округления UNNECESSARY, будет брошено исключение ArithmeticException.

Помимо логического точного результата, каждая арифметическая операция имеет предпочтительный масштаб для представления результата. Предпочтительный масштаб для каждой операции указан в таблице ниже.

Предпочтительные масштабы результатов арифметических операций
Операция Предпочтительный масштаб результата
Сложение max(масштаб_слагаемого, масштаб_слагаемого)
Вычитание max(масштаб_уменьшаемого, масштаб_вычитаемого)
Умножение масштаб_множителя + масштаб_множимого
Деление масштаб_делимого - масштаб_делителя
Квадратный корень масштаб_подкоренного/2
Эти масштабы используются методами, которые возвращают точные арифметические результаты; за исключением того, что при точном делении может потребоваться больший масштаб, так как точный результат может иметь больше цифр. Например, 1/32 является 0.03125.

Перед округлением масштаб логического точного промежуточного результата является предпочтительным масштабом для данной операции. Если точный числовой результат не может быть представлен в precision цифрах, округление выбирает набор цифр для возврата, и масштаб результата уменьшается от масштаба промежуточного результата до наименьшего масштаба, который может представить precision цифр, фактически возвращённых. Если точный результат может быть представлен не более чем в precision цифрах, возвращается представление результата с масштабом, наиболее близким к предпочтительному масштабу. В частности, точно представимый частный может быть представлен менее чем precision цифрами путём удаления последующих нулей и уменьшения масштаба. Например, округление до трёх цифр с использованием режима округления округления вниз,
19/100 = 0.19 // integer=19, scale=2
но
21/110 = 0.190 // integer=190, scale=3

Обратите внимание, что для сложения, вычитания и умножения уменьшение масштаба будет равно количеству позиций цифр точного результата, которые отбрасываются. Если округление вызывает перенос, создающий новую позицию старшей цифры, то отбрасывается дополнительная цифра результата, чем в случае, когда новая позиция цифры не создаётся.

Другие методы могут иметь немного отличающиеся правила округления. Например, результат метода pow при использовании указанного алгоритма иногда может отличаться от округленного математического результата более чем на одну единицу в последнем разряде, одну ulp.

Предоставляются два типа операций для изменения масштаба объекта BigDecimal: операции масштабирования/округления и операции перемещения десятичной точки. Операции масштабирования/округления (setScale и round) возвращают объект BigDecimal, значение которого приблизительно (или точно) равно значению операнда, но масштаб или точность которого является заданным значением; то есть, они увеличивают или уменьшают точность хранимого числа с минимальным влиянием на его значение. Операции перемещения десятичной точки (movePointLeft и movePointRight) возвращают объект BigDecimal, созданный из операнда путём перемещения десятичной точки на заданное расстояние в заданном направлении.

В качестве 32-битного целого числа набор значений масштаба большой, но ограничен. Если масштаб результата превысит диапазон 32-битного целого числа, либо при переполнении, либо при недополнении, операция может выбросить исключение ArithmeticException.

Для краткости и ясности в описаниях методов BigDecimal используется псевдокод. Выражение псевдокода (i + j) означает "объект BigDecimal, значение которого равно значению объекта BigDecimal i плюс значение объекта BigDecimal j". Выражение псевдокода (i == j) означает "true тогда и только тогда, когда объект BigDecimal i представляет то же значение, что и объект BigDecimal j". Другие выражения псевдокода интерпретируются аналогично. Квадратные скобки обозначают конкретную пару BigInteger и масштаба, определяющие значение объекта BigDecimal; например, [19, 2] — это объект BigDecimal численно равный 0,19 со масштабом 2.

Все методы и конструкторы этого класса выбрасывают исключение NullPointerException при передаче ссылки на объект null в качестве параметра.

Примечание API:
Следует проявлять осторожность при использовании объектов BigDecimal в качестве ключей в SortedMap или элементов в SortedSet, поскольку естественный порядок BigDecimal несовместим с equals. См. Comparable, SortedMap или SortedSet для получения дополнительной информации.

Отношение к десятичной арифметике IEEE 754

Начиная с его пересмотра 2008 года, Стандарт IEEE 754 для арифметики с плавающей точкой охватывает десятичные форматы и операции. Хотя существуют широкие сходства в десятичной арифметике, определенной IEEE 754 и этим классом, существуют и заметные различия. Основное сходство, которым обладают BigDecimal и десятичная арифметика IEEE 754, — это концептуальная операция вычисления математического значения бесконечно точного вещественного числа операции и затем отображение этого вещественного числа на представимое десятичное значение с плавающей точкой в соответствии с политикой округления. Политика округления называется режимом округления для BigDecimal и называется атрибутом направления округления в IEEE 754-2019. Когда точное значение не представимо, политика округления определяет, какое из двух представимых десятичных значений, ограничивающих точное значение, выбирается в качестве вычисленного результата. Понятие предпочтительной разрядности/предпочтительного показателя степени также разделяется обеими системами.

Что касается различий, IEEE 754 включает несколько типов значений, не моделируемых BigDecimal, включая отрицательный ноль, знаковые бесконечности и NaN (не число). IEEE 754 определяет форматы, которые параметризуются основанием (двоичным или десятичным), количеством значащих цифр и диапазоном показателя степени. Формат определяет набор представимых значений. Большинство операций принимают в качестве входных данных одно или несколько значений заданного формата и производят результат в том же формате. Разрядность BigDecimal эквивалентна отрицанию показателя степени значения IEEE 754. Значения BigDecimal не имеют формата в том же смысле; все значения имеют тот же возможный диапазон разрядности/показателя степени, а немасштабированное значение имеет произвольную точность. Вместо этого для операций BigDecimal, принимающих параметр MathContext, если у MathContext есть ненулевая точность, набор возможных представимых значений для результата определяется точностью аргумента MathContext. Например, в BigDecimal, если ненулевое трехзначное число и ненулевое четырехзначное число умножаются вместе в контексте объекта MathContext с точностью три, результат будет иметь три значащих цифры (при условии отсутствия переполнения или недополнения и т. д.).

Политики округления, реализованные операциями BigDecimal, указанные режимами округления, являются надмножеством атрибутов направления округления IEEE 754.

Арифметика BigDecimal будет больше всего напоминать десятичную арифметику IEEE 754, если MathContext, соответствующее десятичному формату IEEE 754, например decimal64 или decimal128, используется для округления всех начальных значений и промежуточных операций. Вычисленные числовые значения могут отличаться, если диапазон показателя степени формата IEEE 754, который аппроксимируется, превышен, так как MathContext не ограничивает разрядность результатов BigDecimal. Операции, которые могли бы сгенерировать NaN или точную бесконечность, такие как деление на ноль, выбрасывают ArithmeticException в арифметике BigDecimal.

С момента:
1.1
См. также:
  • BigInteger
  • MathContext
  • RoundingMode
  • SortedMap
  • SortedSet
  • Стандарт IEEE для арифметики с плавающей точкой
  • Сериализованная форма

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

Модификатор и тип Поле Описание
static final BigDecimal ONE
Значение 1 со масштабом 0.
static final int ROUND_CEILING
Устарело.
Используйте RoundingMode.CEILING вместо этого.
static final int ROUND_DOWN
Устарело.
Используйте RoundingMode.DOWN вместо этого.
static final int ROUND_FLOOR
Устарело.
Используйте RoundingMode.FLOOR вместо этого.
static final int ROUND_HALF_DOWN
Устарело.
Используйте RoundingMode.HALF_DOWN вместо этого.
static final int ROUND_HALF_EVEN
Устарело.
Используйте RoundingMode.HALF_EVEN вместо этого.
static final int ROUND_HALF_UP
Устарело.
Используйте RoundingMode.HALF_UP вместо этого.
static final int ROUND_UNNECESSARY
Устарело.
Используйте RoundingMode.UNNECESSARY вместо этого.
static final int ROUND_UP
Устарело.
Используйте RoundingMode.UP вместо этого.
static final BigDecimal TEN
Значение 10 со масштабом 0.
static final BigDecimal TWO
Значение 2 со масштабом 0.
static final BigDecimal ZERO
Значение 0 со масштабом 0.

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

Конструктор Описание
BigDecimal(char[] in)
Преобразует строковое представление BigDecimal в BigDecimal, используя ту же последовательность символов, что и конструктор BigDecimal(String).
BigDecimal(char[] in, int offset, int len)
Преобразует строковое представление BigDecimal в BigDecimal, используя ту же последовательность символов, что и конструктор BigDecimal(String), но позволяя указать подмассив.
BigDecimal(char[] in, int offset, int len, MathContext mc)
Преобразует строковое представление BigDecimal в BigDecimal, используя ту же последовательность символов, что и конструктор BigDecimal(String), но позволяя указать подмассив и округляя в соответствии с настройками контекста.
BigDecimal(char[] in, MathContext mc)
Преобразует строковое представление BigDecimal в BigDecimal, используя ту же последовательность символов, что и конструктор BigDecimal(String), и округляя в соответствии с настройками контекста.
BigDecimal(double val)
Преобразует double в BigDecimal, что представляет собой точное десятичное представление двоичного значения с плавающей точкой double.
BigDecimal(double val, MathContext mc)
Преобразует double в BigDecimal, округляя в соответствии с настройками контекста.
BigDecimal(int val)
Преобразует int в BigDecimal.
BigDecimal(int val, MathContext mc)
Преобразует int в BigDecimal, округляя в соответствии с настройками контекста.
BigDecimal(long val)
Преобразует long в BigDecimal.
BigDecimal(long val, MathContext mc)
Преобразует long в BigDecimal, округляя в соответствии с настройками контекста.
BigDecimal(String val)
Преобразует строковое представление BigDecimal в BigDecimal.
BigDecimal(String val, MathContext mc)
Преобразует строковое представление BigDecimal в BigDecimal, используя те же строки, что и конструктор BigDecimal(String), и округляя в соответствии с настройками контекста.
BigDecimal(BigInteger val)
Преобразует BigInteger в BigDecimal.
BigDecimal(BigInteger unscaledVal, int scale)
Преобразует значение BigInteger без масштабирования и значение масштаба int в BigDecimal.
BigDecimal(BigInteger unscaledVal, int scale, MathContext mc)
Преобразует значение BigInteger без масштабирования и значение масштаба int в BigDecimal, округляя в соответствии с настройками контекста.
BigDecimal(BigInteger val, MathContext mc)
Преобразует BigInteger в BigDecimal, округляя в соответствии с настройками контекста.

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

Modifier and Type Method Description
BigDecimal abs()
Возвращает BigDecimal, значение которого является абсолютным значением этого BigDecimal, а масштаб — this.scale().
BigDecimal abs(MathContext mc)
Возвращает BigDecimal, значение которого является абсолютным значением этого BigDecimal, с округлением в соответствии с настройками контекста.
BigDecimal add(BigDecimal augend)
Возвращает BigDecimal, значение которого равно (this + augend), а масштаб — max(this.scale(), augend.scale()).
BigDecimal add(BigDecimal augend, MathContext mc)
Возвращает BigDecimal, значение которого равно (this + augend), с округлением в соответствии с настройками контекста.
byte byteValueExact()
Преобразует этот BigDecimal в byte, проверяя потерю информации.
int compareTo(BigDecimal val)
Сравнивает этот BigDecimal численно со заданным BigDecimal.
BigDecimal divide(BigDecimal divisor)
Возвращает BigDecimal, значение которого равно (this / divisor), а предпочтительный масштаб — (this.scale() - divisor.scale()); если точное частное не может быть представлено (поскольку оно имеет бесконечную десятичную запись), выбрасывается ArithmeticException.
BigDecimal divide(BigDecimal divisor, int roundingMode)
Устарело.
Вместо этого следует использовать метод divide(BigDecimal, RoundingMode).
BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
Устарело.
Вместо этого следует использовать метод divide(BigDecimal, int, RoundingMode).
BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
Возвращает BigDecimal, значение которого равно (this / divisor), а масштаб задан.
BigDecimal divide(BigDecimal divisor, MathContext mc)
Возвращает BigDecimal, значение которого равно (this / divisor), с округлением в соответствии с настройками контекста.
BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode)
Возвращает BigDecimal, значение которого равно (this / divisor), а масштаб — this.scale().
BigDecimal[] divideAndRemainder(BigDecimal divisor)
Возвращает массив BigDecimal из двух элементов, содержащий результат divideToIntegralValue и remainder над двумя операндами.
BigDecimal[] divideAndRemainder(BigDecimal divisor, MathContext mc)
Возвращает массив BigDecimal из двух элементов, содержащий результат divideToIntegralValue и remainder над двумя операндами, рассчитанный с округлением в соответствии с настройками контекста.
BigDecimal divideToIntegralValue(BigDecimal divisor)
Возвращает BigDecimal, значение которого равно целой части частного (this / divisor) с округлением вниз.
BigDecimal divideToIntegralValue(BigDecimal divisor, MathContext mc)
Возвращает BigDecimal, значение которого равно целой части (this / divisor).
double doubleValue()
Преобразует этот BigDecimal в double.
boolean equals(Object x)
Сравнивает этот BigDecimal с указанным Object на равенство.
float floatValue()
Преобразует этот BigDecimal в float.
int hashCode()
Возвращает хэш-код для этого BigDecimal.
int intValue()
Преобразует этот BigDecimal в int.
int intValueExact()
Преобразует этот BigDecimal в int, проверяя потерю информации.
long longValue()
Преобразует этот BigDecimal в long.
long longValueExact()
Возвращает максимальное значение из этого BigDecimal и val.
BigDecimal min(BigDecimal val)
Возвращает минимальное значение из этого BigDecimal и val.
BigDecimal movePointLeft(int n)
Возвращает BigDecimal, эквивалентный данному, с десятичной запятой, сдвинутой влево на n позиций.
BigDecimal movePointRight(int n)
Возвращает BigDecimal, эквивалентный данному, с десятичной запятой, сдвинутой вправо на n позиций.
BigDecimal multiply(BigDecimal multiplicand)
Возвращает BigDecimal, значение которого равно (this × multiplicand), а масштаб — (this.scale() + multiplicand.scale()).
BigDecimal multiply(BigDecimal multiplicand, MathContext mc)
Возвращает BigDecimal, значение которого равно (this × multiplicand), с округлением в соответствии с настройками контекста.
BigDecimal negate()
Возвращает BigDecimal, значение которого равно (-this), а масштаб — this.scale().
BigDecimal negate(MathContext mc)
Возвращает BigDecimal, значение которого равно (-this), с округлением в соответствии с настройками контекста.
BigDecimal plus()
Возвращает BigDecimal, значение которого равно (+this), а масштаб — this.scale().
BigDecimal plus(MathContext mc)
Возвращает BigDecimal, значение которого равно (+this), с округлением в соответствии с настройками контекста.
BigDecimal pow(int n)
Возвращает BigDecimal, значение которого равно (thisn), степень вычисляется точно, с неограниченной точностью.
BigDecimal pow(int n, MathContext mc)
Возвращает точность этого BigDecimal.
int precision()
Возвращает значение точность этого BigDecimal.
BigDecimal remainder(BigDecimal divisor)
Возвращает BigDecimal, значение которого равно (this % divisor).
BigDecimal remainder(BigDecimal divisor, MathContext mc)
Возвращает BigDecimal, значение которого равно (this % divisor), с округлением в соответствии с настройками контекста.
BigDecimal round(MathContext mc)
Возвращает BigDecimal, округленный в соответствии с настройками MathContext.
int scale()
Возвращает масштаб этого BigDecimal.
BigDecimal scaleByPowerOfTen(int n)
Возвращает BigDecimal, численное значение которого равно (this * 10n).
BigDecimal setScale(int newScale)
Возвращает BigDecimal, масштаб которого равен указанному значению, а значение численно равно этому значению BigDecimal.
BigDecimal setScale(int newScale, int roundingMode)
Устарело.
Вместо этого следует использовать метод setScale(int, RoundingMode).
BigDecimal setScale(int newScale, RoundingMode roundingMode)
Возвращает BigDecimal, масштаб которого равен указанному значению, а значение без знака получено умножением или делением значащего без знака этого BigDecimal на соответствующую степень десяти для сохранения общего значения.
short shortValueExact()
Преобразует этот BigDecimal в short, проверяя потерю информации.
int signum()
Возвращает функцию знака для этого BigDecimal.
BigDecimal sqrt(MathContext mc)
Возвращает приближённое значение квадратного корня из this с округлением в соответствии с настройками контекста.
BigDecimal stripTrailingZeros()
Возвращает BigDecimal, численно равное этому значению, но без любых последующих нулей в представлении.
BigDecimal subtract(BigDecimal subtrahend)
Возвращает BigDecimal, значение которого равно (this - subtrahend), а масштаб которого равен max(this.scale(), subtrahend.scale()).
BigDecimal subtract(BigDecimal subtrahend, MathContext mc)
Возвращает BigDecimal со значением (this - subtrahend) с округлением в соответствии с настройками контекста.
BigInteger toBigInteger()
Преобразует это BigDecimal в BigInteger.
BigInteger toBigIntegerExact()
Преобразует это BigDecimal в BigInteger, проверяя потерю информации.
String toEngineeringString()
Возвращает строковое представление этого BigDecimal, используя инженерную нотацию, если требуется показатель степени.
String toPlainString()
Возвращает строковое представление этого BigDecimal без поля показателя степени.
String toString()
Возвращает строковое представление этого BigDecimal, используя научную нотацию, если требуется показатель степени.
BigDecimal ulp()
Возвращает размер ulp (единица в последнем разряде) для этого BigDecimal.
BigInteger unscaledValue()
Возвращает BigInteger со значением немасштабированного значения этого BigDecimal.
static BigDecimal valueOf(double val)
Преобразует double в BigDecimal, используя каноническое строковое представление double, предоставленное методом Double.toString(double).
static BigDecimal valueOf(long val)
Преобразует значение long в BigDecimal с масштабом ноль.
static BigDecimal valueOf(long unscaledVal, int scale)
Преобразует немасштабированное значение long и масштаб int в BigDecimal.

Методы, объявленные в классе java.lang.Number

byteValue, shortValue

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Подробное описание полей

ZERO

public static final BigDecimal ZERO
Значение 0 со шкалой 0.
Since:
1.5

ONE

public static final BigDecimal ONE
Значение 1 со шкалой 0.
Since:
1.5

TWO

public static final BigDecimal TWO
Значение 2 со шкалой 0.
Since:
19

TEN

public static final BigDecimal TEN
Значение 10 со шкалой 0.
Since:
1.5

ROUND_UP

@Deprecated(since="9") public static final int ROUND_UP
Устаревшее.
Используйте RoundingMode.UP вместо этого.
Режим округления от нуля. Всегда увеличивает цифру перед дробной частью, отличной от нуля. Обратите внимание, что этот режим округления никогда не уменьшает величину рассчитанного значения.
См. также:
  • Значения константных полей

ROUND_DOWN

@Deprecated(since="9") public static final int ROUND_DOWN
Устаревшее.
Используйте RoundingMode.DOWN вместо этого.
Режим округления к нулю. Никогда не увеличивает цифру перед отбрасываемой дробной частью (т. е. усекает). Обратите внимание, что этот режим округления никогда не увеличивает величину рассчитанного значения.
См. также:
  • Значения константных полей

ROUND_CEILING

@Deprecated(since="9") public static final int ROUND_CEILING
Устаревшее.
Используйте RoundingMode.CEILING вместо этого.
Режим округления до положительной бесконечности. Если BigDecimal положительно, работает как для ROUND_UP; если отрицательно, работает как для ROUND_DOWN. Обратите внимание, что этот режим округления никогда не уменьшает рассчитанное значение.
См. также:
  • Значения константных полей

ROUND_FLOOR

@Deprecated(since="9") public static final int ROUND_FLOOR
Устаревшее.
Используйте RoundingMode.FLOOR вместо этого.
Режим округления до отрицательной бесконечности. Если BigDecimal положительно, ведёт себя как для ROUND_DOWN; если отрицательно, ведёт себя как для ROUND_UP. Обратите внимание, что этот режим округления никогда не увеличивает рассчитанное значение.
См. также:
  • Значения константных полей

ROUND_HALF_UP

@Deprecated(since="9") public static final int ROUND_HALF_UP
Устаревшее.
Используйте RoundingMode.HALF_UP вместо этого.
Режим округления к "ближайшему соседу", если оба соседа равноудалены, округлять вверх. Ведёт себя как для ROUND_UP если отбрасываемая дробная часть ≥ 0,5; в противном случае ведёт себя как для ROUND_DOWN. Обратите внимание, что это режим округления, который большинство из нас изучали в начальной школе.
См. также:
  • Значения константных полей

ROUND_HALF_DOWN

@Deprecated(since="9") public static final int ROUND_HALF_DOWN
Устаревшее.
Используйте RoundingMode.HALF_DOWN вместо этого.
Режим округления к "ближайшему соседу", если оба соседа равноудалены, округлять вниз. Ведёт себя как для ROUND_UP если отбрасываемая дробная часть > 0,5; в противном случае ведёт себя как для ROUND_DOWN.
См. также:
  • Значения константных полей

ROUND_HALF_EVEN

@Deprecated(since="9") public static final int ROUND_HALF_EVEN
Устаревшее.
Используйте RoundingMode.HALF_EVEN вместо этого.
Режим округления к "ближайшему соседу", если оба соседа равноудалены, округлять к чётному соседу. Ведёт себя как для ROUND_HALF_UP если цифра слева от отбрасываемой дробной части нечётная; ведёт себя как для ROUND_HALF_DOWN если чётная. Обратите внимание, что этот режим округления минимизирует накопленную ошибку при многократном применении в последовательности вычислений.
См. также:
  • Значения константных полей

ROUND_UNNECESSARY

@Deprecated(since="9") public static final int ROUND_UNNECESSARY
Устаревшее.
Используйте RoundingMode.UNNECESSARY вместо этого.
Режим округления, чтобы утверждать, что запрашиваемая операция имеет точный результат, поэтому округление не требуется. Если этот режим округления указан в операции, которая даёт неточный результат, будет брошено ArithmeticException.
См. также:
  • Значения константных полей

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

BigDecimal

public BigDecimal(char[] in, int offset, int len)
Преобразует символьное представление BigDecimal в BigDecimal, принимая ту же последовательность символов, что и конструктор BigDecimal(String), позволяя указать подмассив.
Примечание об реализации:
Если последовательность символов уже доступна в массиве символов, использование этого конструктора быстрее, чем преобразование массива char в строку и использование конструктора BigDecimal(String).
Параметры:
in - массив char символов, являющийся источником символов.
offset - первый символ в массиве для проверки.
len - количество символов для рассмотрения.
Исключения:
NumberFormatException - если in не является допустимым представлением BigDecimal или определённый подмассив не полностью находится в in.
Since:
1.5

BigDecimal

public BigDecimal(char[] in, int offset, int len, MathContext mc)
Преобразует символьное представление BigDecimal в BigDecimal, принимая ту же последовательность символов, что и конструктор BigDecimal(String), позволяя указать подмассив и с округлением в соответствии с настройками контекста.
Примечание об реализации:
Если последовательность символов уже доступна в массиве символов, использование этого конструктора быстрее, чем преобразование массива char в строку и использование конструктора BigDecimal(String).
Параметры:
in - массив char символов, являющийся источником символов.
offset - первый символ в массиве для проверки.
len - количество символов для рассмотрения.
mc - используемый контекст.
Исключения:
NumberFormatException - если in не является допустимым представлением BigDecimal или определённый подмассив не полностью находится в in.
Since:
1.5

BigDecimal

public BigDecimal(char[] in)
Преобразует символьное представление BigDecimal в BigDecimal, принимая ту же последовательность символов, что и конструктор BigDecimal(String).
Примечание об реализации:
Если последовательность символов уже доступна в виде массива символов, использование этого конструктора быстрее, чем преобразование массива char в строку и использование конструктора BigDecimal(String).
Параметры:
in - массив char символов, являющийся источником символов.
Исключения:
NumberFormatException - если in не является допустимым представлением BigDecimal.
Since:
1.5
END_OF_DOCUMENT_MARKER

BigDecimal

public BigDecimal(char[] in, MathContext mc)
Преобразует символьное представление BigDecimal в BigDecimal, принимая ту же последовательность символов, что и конструктор BigDecimal(String), с округлением в соответствии с настройками контекста.
Замечание по реализации:
Если последовательность символов уже доступна в виде символьного массива, использование этого конструктора быстрее, чем преобразование массива char в строку и использование конструктора BigDecimal(String).
Параметры:
in - массив символов, являющийся источником символов.
mc - контекст, используемый для округления.
Исключения:
NumberFormatException - если in не является допустимым представлением BigDecimal.
С:
1.5

BigDecimal

public BigDecimal(String val)
Преобразует строковое представление BigDecimal в BigDecimal. Строковое представление состоит из необязательного знака, '+' ( '\u002B') или '-' ('\u002D'), за которым следует последовательность нуля или более десятичных цифр ("целая часть"), необязательно за которой следует дробная часть, необязательно за которой следует показатель степени.

Дробная часть состоит из десятичной точки, за которой следует ноль или более десятичных цифр. Строка должна содержать как минимум одну цифру в целой или дробной части. Число, образованное знаком, целой и дробной частью, называется значащей частью.

Показатель степени состоит из символа 'e' ('\u0065') или 'E' ('\u0045') , за которым следует одна или более десятичных цифр.

Более формально, строки, которые принимает этот конструктор, описываются следующим грамматическим разбором:

BigDecimalString:
Signopt Significand Exponentopt
Sign:
+
-
Significand:
IntegerPart . FractionPartopt
. FractionPart
IntegerPart
IntegerPart:
Digits
FractionPart:
Digits
Exponent:
ExponentIndicator SignedInteger
ExponentIndicator:
e
E
SignedInteger:
Signopt Digits
Digits:
Digit
Digits Digit
Digit:
любой символ, для которого Character.isDigit(char) возвращает true, включая 0, 1, 2 ...

Масштаб возвращаемого BigDecimal будет равен числу цифр в дробной части или нулю, если в строке нет десятичной точки, с корректировкой на показатель степени; если строка содержит показатель степени, показатель степени вычитается из масштаба. Значение полученного масштаба должно находиться в диапазоне от Integer.MIN_VALUE до Integer.MAX_VALUE, включительно.

Преобразование символов в цифры выполняется с помощью Character.digit(char, int) для преобразования в систему счисления 10. Строка не должна содержать дополнительных символов (например, пробелов).

Примеры:
Значение возвращаемого BigDecimal равно значащей части × 10 показатель степени. Для каждой строки слева показано соответствующее представление [BigInteger, scale] справа.

 "0"            [0,0]
 "0.00"         [0,2]
 "123"          [123,0]
 "-123"         [-123,0]
 "1.23E3"       [123,-1]
 "1.23E+3"      [123,-1]
 "12.3E+7"      [123,-6]
 "12.0"         [120,1]
 "12.3"         [123,1]
 "0.00123"      [123,5]
 "-1.23E-12"    [-123,14]
 "1234.5E-4"    [12345,5]
 "0E+7"         [0,-7]
 "-0"           [0,0]
 
Примечание API:
Для значений, отличных от float и double NaN и ±Бесконечность, этот конструктор совместим со значениями, возвращаемыми Float.toString(float) и Double.toString(double). Это обычно предпочтительный способ преобразования float или double в BigDecimal, поскольку он не страдает непредсказуемостью конструктора BigDecimal(double).
Параметры:
val - строковое представление BigDecimal.
Исключения:
NumberFormatException - если val не является допустимым представлением BigDecimal.

BigDecimal

public BigDecimal(String val, MathContext mc)
Преобразует строковое представление BigDecimal в BigDecimal, принимая те же строки, что и конструктор BigDecimal(String), с округлением в соответствии с настройками контекста.
Параметры:
val - строковое представление BigDecimal.
mc - контекст, используемый для округления.
Исключения:
NumberFormatException - если val не является допустимым представлением BigDecimal.
С:
1.5

BigDecimal

public BigDecimal(double val)
Преобразует double в BigDecimal, которое представляет собой точное десятичное представление двоичного значения с плавающей запятой double. Масштаб возвращаемого BigDecimal - наименьшее значение, при котором (10scale × val) является целым числом.

Примечания:

  1. Результаты этого конструктора могут быть несколько непредсказуемыми. Можно предположить, что запись new BigDecimal(0.1) на Java создает BigDecimal, который точно равен 0,1 (безмасштабное значение 1, масштаб 1), но на самом деле он равен 0.1000000000000000055511151231257827021181583404541015625. Это происходит потому, что 0,1 не может быть точно представлена как double (или, впрочем, как двоичная дробь конечной длины). Таким образом, значение, передаваемое в конструктор, не точно равно 0,1, несмотря на внешнее представление.
  2. Конструктор String, с другой стороны, полностью предсказуем: запись new BigDecimal("0.1") создает BigDecimal, который точно равен 0,1, как и ожидалось. Поэтому рекомендуется использовать конструктор конструктор со строкой вместо этого.
  3. Когда double должен использоваться в качестве источника для BigDecimal, обратите внимание, что этот конструктор обеспечивает точное преобразование; он не даёт такой же результат, как преобразование double в строку с помощью метода Double.toString(double) и последующее использование конструктора BigDecimal(String). Для получения такого результата используйте метод valueOf(double).
Параметры:
val - значение с плавающей запятой, подлежащее преобразованию в BigDecimal.
Исключения:
NumberFormatException - если val бесконечна или равна NaN.

BigDecimal

public BigDecimal(double val, MathContext mc)
Преобразует double в BigDecimal, с округлением в соответствии с настройками контекста. Масштаб BigDecimal - наименьшее значение, при котором (10scale × val) является целым числом.

Результаты этого конструктора могут быть несколько непредсказуемыми, и его использование, как правило, не рекомендуется; см. примечания к конструктору BigDecimal(double).

Параметры:
val - значение с плавающей запятой, подлежащее преобразованию в BigDecimal.
mc - контекст, используемый для округления.
Исключения:
NumberFormatException - если val бесконечна или равна NaN.
С:
1.5

BigDecimal

public BigDecimal(BigInteger val)
Преобразует BigInteger в BigDecimal. Масштаб BigDecimal равен нулю.
Параметры:
val - значение BigInteger, подлежащее преобразованию в BigDecimal.

BigDecimal

public BigDecimal(BigInteger val, MathContext mc)
Преобразует BigInteger в BigDecimal, с округлением в соответствии с настройками контекста. Масштаб BigDecimal равен нулю.
Параметры:
val - значение BigInteger, подлежащее преобразованию в BigDecimal.
mc - контекст, используемый для округления.
С:
1.5

BigDecimal

public BigDecimal(BigInteger unscaledVal, int scale)
Преобразует BigInteger безмасштабное значение и int масштаб в BigDecimal. Значение BigDecimal равно (unscaledVal × 10-scale).
Параметры:
unscaledVal - безмасштабное значение BigDecimal.
scale - масштаб BigDecimal.

BigDecimal

public BigDecimal(BigInteger unscaledVal, int scale, MathContext mc)
Преобразует BigInteger безмасштабное значение и int масштаб в BigDecimal, с округлением в соответствии с настройками контекста. Значение BigDecimal равно (unscaledVal × 10-scale), округлено в соответствии с настройками precision и режима округления.
Параметры:
unscaledVal - безмасштабное значение BigDecimal.
scale - масштаб BigDecimal.
mc - контекст, используемый для округления.
С:
1.5

BigDecimal

public BigDecimal(int val)
Преобразует целое число в BigDecimal. Масштаб BigDecimal равен нулю.
Параметры:
val - целое число, которое нужно преобразовать в BigDecimal.
С:
1.5

BigDecimal

public BigDecimal(int val, MathContext mc)
Преобразует целое число в BigDecimal с округлением согласно настройкам контекста. Масштаб BigDecimal, до округления, равен нулю.
Параметры:
val - целое число, которое нужно преобразовать в BigDecimal.
mc - контекст для округления.
С:
1.5

BigDecimal

public BigDecimal(long val)
Преобразует длинное целое число в BigDecimal. Масштаб BigDecimal равен нулю.
Параметры:
val - длинное целое число, которое нужно преобразовать в BigDecimal.
С:
1.5

BigDecimal

public BigDecimal(long val, MathContext mc)
Преобразует длинное целое число в BigDecimal с округлением согласно настройкам контекста. Масштаб BigDecimal, до округления, равен нулю.
Параметры:
val - длинное целое число, которое нужно преобразовать в BigDecimal.
mc - контекст для округления.
С:
1.5

Методы

valueOf

public static BigDecimal valueOf(long unscaledVal, int scale)
Преобразует неразмеренное значение и масштаб в BigDecimal.
Примечание API:
Этот статический фабричный метод предпочтительнее конструктора (long, int) потому что он позволяет повторно использовать часто используемые значения BigDecimal.
Параметры:
unscaledVal - неразмеренное значение BigDecimal.
scale - масштаб BigDecimal.
Возвращает:
BigDecimal со значением (unscaledVal × 10-scale).

valueOf

public static BigDecimal valueOf(long val)
Преобразует длинное целое число в BigDecimal с масштабом ноль.
Примечание API:
Этот статический фабричный метод предпочтительнее конструктора (long) потому что он позволяет повторно использовать часто используемые значения BigDecimal.
Параметры:
val - значение длинного целого числа.
Возвращает:
BigDecimal со значением val.

valueOf

public static BigDecimal valueOf(double val)
Преобразует double в BigDecimal, используя каноническое строковое представление double, предоставляемое методом Double.toString(double).
Примечание API:
Это обычно предпочтительный способ преобразования double (или float) в BigDecimal, так как возвращаемое значение равно результату построения BigDecimal из результата использования Double.toString(double).
Параметры:
val - double, которое нужно преобразовать в BigDecimal.
Возвращает:
BigDecimal, значение которого равно или приблизительно равно значению val.
Исключения:
NumberFormatException - если val бесконечно или NaN.
С:
1.5

add

public BigDecimal add(BigDecimal augend)
Возвращает BigDecimal, значение которого равно сумме текущего BigDecimal и переданного BigDecimal, масштаб результата равен масштабу текущего BigDecimal.
Параметры:
augend - значение, которое нужно добавить к текущему BigDecimal.
Возвращает:
BigDecimal

add

public BigDecimal add(BigDecimal augend, MathContext mc)
Возвращает BigDecimal, значение которого равно сумме текущего BigDecimal и переданного BigDecimal, с округлением согласно настройкам контекста. Если одно из чисел равно нулю и настройка точности отлична от нуля, то другое число, округленное при необходимости, используется в качестве результата.
Параметры:
augend - значение, которое нужно добавить к текущему BigDecimal.
mc - контекст для округления.
Возвращает:
BigDecimal, округленный при необходимости.
С:
1.5

subtract

public BigDecimal subtract(BigDecimal subtrahend)
Возвращает BigDecimal, значение которого равно разности текущего BigDecimal и переданного BigDecimal, масштаб результата равен масштабу текущего BigDecimal.
Параметры:
subtrahend - значение, которое нужно вычесть из текущего BigDecimal.
Возвращает:
BigDecimal

subtract

public BigDecimal subtract(BigDecimal subtrahend, MathContext mc)
Возвращает BigDecimal, значение которого равно разности текущего BigDecimal и переданного BigDecimal, с округлением согласно настройкам контекста. Если переданное число равно нулю, то текущее число, округленное при необходимости, используется в качестве результата. Если текущее число равно нулю, то результат равен -переданное число.
Параметры:
subtrahend - значение, которое нужно вычесть из текущего BigDecimal.
mc - контекст для округления.
Возвращает:
BigDecimal, округленный при необходимости.
С:
1.5

multiply

public BigDecimal multiply(BigDecimal multiplicand)
Возвращает BigDecimal, значение которого равно произведению текущего BigDecimal и переданного BigDecimal, масштаб результата равен масштабу текущего BigDecimal.
Параметры:
multiplicand - значение, на которое нужно умножить текущий BigDecimal.
Возвращает:
BigDecimal

multiply

public BigDecimal multiply(BigDecimal multiplicand, MathContext mc)
Возвращает BigDecimal, значение которого равно произведению текущего BigDecimal и переданного BigDecimal, с округлением согласно настройкам контекста.
Параметры:
multiplicand - значение, на которое нужно умножить текущий BigDecimal.
mc - контекст для округления.
Возвращает:
BigDecimal, округленный при необходимости.
С:
1.5

divide

@Deprecated(since="9") public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
Устарело.
Следует использовать метод divide(BigDecimal, int, RoundingMode).
Возвращает BigDecimal, значение которого равно результату деления текущего BigDecimal на переданное значение, масштаб результата задан. Если необходимо округлить результат, применяется указанный режим округления.
Параметры:
divisor - значение, на которое нужно разделить текущий BigDecimal.
scale - масштаб результата деления.
roundingMode - режим округления.
Возвращает:
BigDecimal
Исключения:
ArithmeticException - если divisor, roundingMode==ROUND_UNNECESSARY и указанный масштаб недостаточен для точного представления результата деления.
IllegalArgumentException - если roundingMode не соответствует допустимому режиму округления.
См. также:
  • ROUND_UP
  • ROUND_DOWN
  • ROUND_CEILING
  • ROUND_FLOOR
  • ROUND_HALF_UP
  • ROUND_HALF_DOWN
  • ROUND_HALF_EVEN
  • ROUND_UNNECESSARY

divide

public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
Возвращает BigDecimal, значение которого равно результату деления текущего BigDecimal на переданное значение, масштаб результата задан. Если необходимо округлить результат, применяется указанный режим округления.
Параметры:
divisor - значение, на которое нужно разделить текущий BigDecimal.
scale - масштаб результата деления.
roundingMode - режим округления.
Возвращает:
BigDecimal
Исключения:
ArithmeticException - если divisor, roundingMode==RoundingMode.UNNECESSARY и указанный масштаб недостаточен для точного представления результата деления.
С:
1.5

деление

@Deprecated(since="9") public BigDecimal divide(BigDecimal divisor, int roundingMode)
Устаревшее.
Метод divide(BigDecimal, RoundingMode) следует использовать вместо этого устаревшего метода.
Возвращает BigDecimal, значение которого равно (this / divisor), а масштаб равен this.scale(). Если для получения результата с заданным масштабом необходимо выполнить округление, применяется указанный режим округления.
Параметры:
divisor - значение, на которое следует разделить это BigDecimal.
roundingMode - режим округления для применения.
Возвращает:
this / divisor
Исключения:
ArithmeticException - если divisor==0, или roundingMode==ROUND_UNNECESSARY и this.scale() недостаточно для точного представления результата деления.
IllegalArgumentException - если roundingMode не представляет допустимый режим округления.
См. также:
  • ROUND_UP
  • ROUND_DOWN
  • ROUND_CEILING
  • ROUND_FLOOR
  • ROUND_HALF_UP
  • ROUND_HALF_DOWN
  • ROUND_HALF_EVEN
  • ROUND_UNNECESSARY

деление

public BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode)
Возвращает BigDecimal, значение которого равно (this / divisor), а масштаб равен this.scale(). Если для получения результата с заданным масштабом необходимо выполнить округление, применяется указанный режим округления.
Параметры:
divisor - значение, на которое следует разделить это BigDecimal.
roundingMode - режим округления для применения.
Возвращает:
this / divisor
Исключения:
ArithmeticException - если divisor==0, или roundingMode==RoundingMode.UNNECESSARY и this.scale() недостаточно для точного представления результата деления.
С:
1.5

деление

public BigDecimal divide(BigDecimal divisor)
Возвращает BigDecimal, значение которого равно (this / divisor), а предпочтительный масштаб равен (this.scale() - divisor.scale()); если точный частное не может быть представлен (потому что имеет бесконечное десятичное представление), выбрасывается ArithmeticException.
Параметры:
divisor - значение, на которое следует разделить это BigDecimal.
Возвращает:
this / divisor
Исключения:
ArithmeticException - если точный частное не имеет конечного десятичного представления, включая деление на ноль
С:
1.5

деление

public BigDecimal divide(BigDecimal divisor, MathContext mc)
Возвращает BigDecimal, значение которого равно (this / divisor), с округлением в соответствии с параметрами контекста.
Параметры:
divisor - значение, на которое следует разделить это BigDecimal.
mc - контекст для использования.
Возвращает:
this / divisor, округленный по мере необходимости.
Исключения:
ArithmeticException - если результат неточен, но режим округления UNNECESSARY или mc.precision == 0 и частное имеет бесконечное десятичное представление, включая деление на ноль
С:
1.5

divideToIntegralValue

public BigDecimal divideToIntegralValue(BigDecimal divisor)
Возвращает BigDecimal, значение которого равно целой части частного (this / divisor), округленной вниз. Предпочтительный масштаб результата (this.scale() - divisor.scale()).
Параметры:
divisor - значение, на которое следует разделить это BigDecimal.
Возвращает:
Целая часть this / divisor.
Исключения:
ArithmeticException - если divisor==0
С:
1.5

divideToIntegralValue

public BigDecimal divideToIntegralValue(BigDecimal divisor, MathContext mc)
Возвращает BigDecimal, значение которого равно целой части (this / divisor). Поскольку целая часть точного частного не зависит от режима округления, режим округления не влияет на значения, возвращаемые этим методом. Предпочтительный масштаб результата (this.scale() - divisor.scale()). ArithmeticException выбрасывается, если целая часть точного частного требует более mc.precision цифр.
Параметры:
divisor - значение, на которое следует разделить это BigDecimal.
mc - контекст для использования.
Возвращает:
Целая часть this / divisor.
Исключения:
ArithmeticException - если divisor==0
ArithmeticException - если mc.precision > 0 и результат требует точности более mc.precision цифр.
С:
1.5

остаток

public BigDecimal remainder(BigDecimal divisor)
Возвращает BigDecimal, значение которого равно (this % divisor).

Остаток задается формулой this.subtract(this.divideToIntegralValue(divisor).multiply(divisor)). Обратите внимание, что это не операция модуля (результат может быть отрицательным).

Параметры:
divisor - значение, на которое следует разделить это BigDecimal.
Возвращает:
this % divisor.
Исключения:
ArithmeticException - если divisor==0
С:
1.5

остаток

public BigDecimal remainder(BigDecimal divisor, MathContext mc)
Возвращает BigDecimal, значение которого равно (this % divisor), с округлением в соответствии с параметрами контекста. Параметры MathContext контекста влияют на неявное деление, используемое для вычисления остатка. Вычисление остатка по определению точное. Поэтому остаток может содержать более mc.getPrecision() цифр.

Остаток задается формулой this.subtract(this.divideToIntegralValue(divisor, mc).multiply(divisor)). Обратите внимание, что это не операция модуля (результат может быть отрицательным).

Параметры:
divisor - значение, на которое следует разделить это BigDecimal.
mc - контекст для использования.
Возвращает:
this % divisor, округленный по мере необходимости.
Исключения:
ArithmeticException - если divisor==0
ArithmeticException - если результат неточен, но режим округления UNNECESSARY, или mc.precision > 0 и результат this.divideToIntegralValue(divisor) потребовал бы точности более mc.precision цифр.
С:
1.5
См. также:
  • divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)

divideAndRemainder

public BigDecimal[] divideAndRemainder(BigDecimal divisor)
Возвращает массив из двух элементов, содержащий результат divideToIntegralValue за которым следует результат remainder для двух операндов.

Обратите внимание, что если требуется как целая часть частного, так и остаток, этот метод быстрее, чем использование методов divideToIntegralValue и remainder по отдельности, потому что деление нужно выполнять только один раз.

Параметры:
divisor - значение, на которое следует разделить это BigDecimal, и вычислить остаток.
Возвращает:
массив из двух элементов: частное (результат divideToIntegralValue) - начальный элемент, а остаток - конечный.
Исключения:
ArithmeticException - если divisor==0
С:
1.5
См. также:
  • divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)
  • remainder(java.math.BigDecimal, java.math.MathContext)

divideAndRemainder

public BigDecimal[] divideAndRemainder(BigDecimal divisor, MathContext mc)
Возвращает массив из двух элементов, содержащий результат divideToIntegralValue за которым следует результат remainder для двух операндов, вычисленный с округлением в соответствии с параметрами контекста.

Обратите внимание, что если требуется как целая часть частного, так и остаток, этот метод быстрее, чем использование методов divideToIntegralValue и remainder по отдельности, потому что деление нужно выполнять только один раз.

Параметры:
divisor - значение, на которое следует разделить это BigDecimal, и вычислить остаток.
mc - контекст для использования.
Возвращает:
массив из двух элементов: частное (результат divideToIntegralValue) - начальный элемент, а остаток - конечный.
Исключения:
ArithmeticException - если divisor==0
ArithmeticException - если результат неточен, но режим округления UNNECESSARY, или mc.precision > 0 и результат this.divideToIntegralValue(divisor) потребовал бы точности более mc.precision цифр.
С:
1.5
См. также:
  • divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)
  • remainder(java.math.BigDecimal, java.math.MathContext)

sqrt

public BigDecimal sqrt(MathContext mc)
Возвращает приближённое значение квадратного корня из this с округлением в соответствии с настройками контекста.

Предпочтительная разрядность возвращаемого результата равна this.scale()/2. Значение возвращаемого результата всегда находится в пределах одной единицы в последнем значащем разряде (ulp) от точного десятичного значения для заданной точности. Если режим округления равен HALF_UP, HALF_DOWN или HALF_EVEN, результат находится в пределах одной половины ulp от точного десятичного значения.

Особые случаи:

  • Квадратный корень из числа, численно равного ZERO, численно равен ZERO с предпочтительной разрядностью в соответствии с общим правилом выше. В частности, для ZERO, ZERO.sqrt(mc).equals(ZERO) является истинным при любом MathContext в качестве аргумента.
Параметры:
mc - контекст для использования.
Возвращает:
квадратный корень из this.
Исключения:
ArithmeticException - если this меньше нуля.
ArithmeticException - если требуется точный результат (mc.getPrecision()==0) и нет конечного десятичного представления точного результата
ArithmeticException - если (mc.getRoundingMode()==RoundingMode.UNNECESSARY) и точный результат не может поместиться в mc.getPrecision() цифр.
С:
9
См. также:
  • BigInteger.sqrt()

pow

public BigDecimal pow(int n)
Возвращает BigDecimal, значение которого равно (thisn). Степень вычисляется точно, с неограниченной точностью.

Параметр n должен находиться в диапазоне от 0 до 999999999 включительно. ZERO.pow(0) возвращает ONE. Обратите внимание, что в будущих версиях диапазон допустимых показателей степени этого метода может быть расширен.

Параметры:
n - показатель степени, к которому возводится это BigDecimal.
Возвращает:
thisn
Исключения:
ArithmeticException - если n выходит за пределы диапазона.
С:
1.5

pow

public BigDecimal pow(int n, MathContext mc)
Возвращает BigDecimal значение которого равно (thisn). Текущая реализация использует основной алгоритм, определённый в ANSI-стандарте X3.274-1996, с округлением в соответствии с настройками контекста. В общем случае, возвращаемое числовое значение находится в пределах двух единиц в последнем значащем разряде (ulp) от точного числового значения для выбранной точности. Обратите внимание, что в будущих версиях может быть использован другой алгоритм с уменьшенной допустимой погрешностью и расширенным диапазоном показателей степени.

Алгоритм X3.274-1996:

  • Исключение ArithmeticException выбрасывается, если:
    • abs(n) > 999999999
    • mc.precision == 0 и n < 0
    • mc.precision > 0 и n имеет более mc.precision десятичных знаков
  • если n равно нулю, ONE возвращается, даже если this равно нулю, в противном случае
    • если n положительно, результат вычисляется с помощью техники возведения в степень с помощью повторяющегося возведения в квадрат в единственный накопитель. Отдельные умножения с накопителем используют те же настройки контекста математики, что и в mc, за исключением увеличенной точности до mc.precision + elength + 1, где elength — число десятичных знаков в n.
    • если n отрицательно, результат вычисляется так, как если бы n было положительным; затем это значение делится на единицу с использованием указанной выше рабочей точности.
    • Конечное значение из положительного или отрицательного случая затем округляется до целевой точности.
Параметры:
n - показатель степени, к которому возводится это BigDecimal.
mc - контекст для использования.
Возвращает:
thisn используя алгоритм ANSI-стандарта X3.274-1996
Исключения:
ArithmeticException - если результат неточен, но режим округления UNNECESSARY, или n выходит за пределы диапазона.
С:
1.5

abs

public BigDecimal abs()
Возвращает BigDecimal с значением, равным модулю этого BigDecimal, и разрядностью this.scale().
Возвращает:
abs(this)

abs

public BigDecimal abs(MathContext mc)
Возвращает BigDecimal с значением, равным модулю этого BigDecimal, с округлением в соответствии с настройками контекста.
Параметры:
mc - контекст для использования.
Возвращает:
abs(this), округлённый по необходимости.
С:
1.5

negate

public BigDecimal negate()
Возвращает BigDecimal с значением, равным отрицанию этого (-this), и разрядностью this.scale().
Возвращает:
-this.

negate

public BigDecimal negate(MathContext mc)
Возвращает BigDecimal со значением, равным отрицанию этого (-this), с округлением в соответствии с настройками контекста.
Параметры:
mc - контекст для использования.
Возвращает:
-this, округлённый по необходимости.
С:
1.5

plus

public BigDecimal plus()
Возвращает BigDecimal со значением, равным этому (+this), и разрядностью this.scale().

Этот метод, который просто возвращает это BigDecimal, включён для симметрии с методом унарного минуса negate().

Возвращает:
this.
С:
1.5
См. также:
  • negate()

plus

public BigDecimal plus(MathContext mc)
Возвращает BigDecimal со значением, равным этому (+this), с округлением в соответствии с настройками контекста.

Эффект этого метода идентичен эффекту метода round(MathContext).

Параметры:
mc - контекст для использования.
Возвращает:
this, округлённый по необходимости. Результат, равный нулю, будет иметь разрядность 0.
С:
1.5
См. также:
  • round(MathContext)

signum

public int signum()
Возвращает функцию знака этого BigDecimal.
Возвращает:
-1, 0 или 1, в зависимости от того, является ли значение этого BigDecimal отрицательным, нулевым или положительным.

scale

public int scale()
Возвращает разрядность этого BigDecimal. Если разрядность равна нулю или положительна, то это число десятичных знаков справа от десятичной точки. Если разрядность отрицательна, то неупрощённое значение числа умножается на десять в степени, равной отрицанию разрядности. Например, разрядность -3 означает, что неупрощённое значение умножается на 1000.
Возвращает:
разрядность этого BigDecimal.

precision

public int precision()
Возвращает точность этого BigDecimal. (Точность — количество цифр в неупрощённом значении.)

Точность нулевого значения равна 1.

Возвращает:
точность этого BigDecimal.
С:
1.5

unscaledValue

public BigInteger unscaledValue()
Возвращает BigInteger с значением, равным неупрощённому значению этого BigDecimal. (Вычисляет (this * 10this.scale()).)
Возвращает:
неупрощённое значение этого BigDecimal.
С:
1.2

round

public BigDecimal round(MathContext mc)
Возвращает BigDecimal, округлённый в соответствии с настройками MathContext. Если настройка точности равна 0, округление не выполняется.

Эффект этого метода идентичен эффекту метода plus(MathContext).

Параметры:
mc - контекст для использования.
Возвращает:
BigDecimal округлённый в соответствии с настройками MathContext.
С:
1.5
См. также:
  • plus(MathContext)

setScale

public BigDecimal setScale(int newScale, RoundingMode roundingMode)
Возвращает BigDecimal, масштаб которого задан указанным значением, а значение без масштаба определяется умножением или делением значения без масштаба этого BigDecimal на соответствующую степень десяти для поддержания его общего значения. Если масштаб уменьшается в результате операции, значение без масштаба должно быть разделено (а не умножено), и значение может быть изменено; в этом случае к делению применяется указанный режим округления.
Примечание API:
Поскольку объекты BigDecimal неизменяемы, вызовы этого метода не приводят к изменению исходного объекта, в отличие от обычной соглашения, где методы, имеющие имя setX, изменяют поле X. Вместо этого setScale возвращает объект с правильным масштабом; возвращаемый объект может быть или не быть вновь выделенным.
Параметры:
newScale - масштаб значения BigDecimal , которое должно быть возвращено.
roundingMode - Режим округления для применения.
Возвращает:
a BigDecimal с масштабом, равным заданному значению, и значением без масштаба, определяемым умножением или делением значения без масштаба этого BigDecimal на соответствующую степень десяти для поддержания его общего значения.
Исключение:
ArithmeticException - если roundingMode==UNNECESSARY и указанная операция масштабирования потребовали бы округления.
С:
1.5
См. также:
  • RoundingMode

setScale

@Deprecated(since="9") public BigDecimal setScale(int newScale, int roundingMode)
Устаревший.
Метод setScale(int, RoundingMode) следует использовать вместо этого устаревшего метода.
Возвращает BigDecimal, масштаб которого равен заданному значению, а значение без масштаба определяется умножением или делением значения без масштаба этого BigDecimal на соответствующую степень десяти для сохранения его общего значения. Если масштаб уменьшается в ходе операции, значение без масштаба должно быть разделено (а не умножено), и значение может быть изменено; в этом случае к делению применяется указанный режим округления.
Примечание API:
Поскольку объекты BigDecimal неизменяемы, вызовы этого метода не приводят к изменению исходного объекта, в отличие от обычной практики, где методы с именем setX изменяют поле X. Вместо этого setScale возвращает объект с правильным масштабом; возвращаемый объект может быть или не быть вновь выделенным.
Параметры:
newScale - масштаб значения BigDecimal , которое должно быть возвращено.
roundingMode - Режим округления для применения.
Возвращает:
a BigDecimal с масштабом, равным заданному значению, и значением без масштаба, определяемым умножением или делением значения без масштаба этого BigDecimal на соответствующую степень десяти для сохранения его общего значения.
Исключение:
ArithmeticException - если roundingMode==ROUND_UNNECESSARY и указанная операция масштабирования потребовали бы округления.
IllegalArgumentException - если roundingMode не представляет действительный режим округления.
См. также:
  • ROUND_UP
  • ROUND_DOWN
  • ROUND_CEILING
  • ROUND_FLOOR
  • ROUND_HALF_UP
  • ROUND_HALF_DOWN
  • ROUND_HALF_EVEN
  • ROUND_UNNECESSARY

setScale

public BigDecimal setScale(int newScale)
Возвращает BigDecimal, масштаб которого равен заданному значению, и значение которого численно равно этому BigDecimal. Бросает исключение ArithmeticException, если это невозможно.

Этот вызов обычно используется для увеличения масштаба, в этом случае гарантируется, что существует BigDecimal указанного масштаба и правильного значения. Вызов также может использоваться для уменьшения масштаба, если вызывающий знает, что BigDecimal имеет достаточно много нулей в конце дробной части (т. е. множители десяти в его целочисленном значении) для допуска масштабирования без изменения его значения.

Этот метод возвращает тот же результат, что и версии метода setScale с двумя аргументами, но экономит вызывающему код указания режима округления в тех случаях, где это не имеет значения.

Примечание API:
Поскольку объекты BigDecimal неизменяемы, вызовы этого метода не приводят к изменению исходного объекта, в отличие от обычной соглашения, где методы с именем setX изменяют поле X. Вместо этого setScale возвращает объект с правильным масштабом; возвращаемый объект может быть или не быть вновь выделенным.
Параметры:
newScale - масштаб значения BigDecimal , которое должно быть возвращено.
Возвращает:
a BigDecimal с масштабом, равным заданному значению, и значением без масштаба, определяемым умножением или делением значения без масштаба этого BigDecimal на соответствующую степень десяти для сохранения его общего значения.
Исключение:
ArithmeticException - если указанная операция масштабирования потребовала бы округления.
См. также:
  • setScale(int, int)
  • setScale(int, RoundingMode)

movePointLeft

public BigDecimal movePointLeft(int n)
Возвращает BigDecimal, эквивалентный этому, с десятичной точкой, сдвинутой влево на n позиций. Если n неотрицательно, вызов просто добавляет n к масштабу. Если n отрицательно, вызов эквивалентен movePointRight(-n). Возвращённый BigDecimal имеет значение (this × 10-n) и масштаб max(this.scale()+n, 0).
Параметры:
n - число позиций для сдвига десятичной точки влево.
Возвращает:
a BigDecimal , эквивалентный этому, с десятичной точкой, сдвинутой влево на n позиций.
Исключение:
ArithmeticException - если масштаб переполняется.

movePointRight

public BigDecimal movePointRight(int n)
Возвращает BigDecimal, эквивалентный этому, с десятичной точкой, сдвинутой вправо на n позиций. Если n неотрицательно, вызов просто вычитает n из масштаба. Если n отрицательно, вызов эквивалентен movePointLeft(-n). Возвращённый BigDecimal имеет значение (this × 10n) и масштаб max(this.scale()-n, 0).
Параметры:
n - число позиций для сдвига десятичной точки вправо.
Возвращает:
a BigDecimal , эквивалентный этому, с десятичной точкой, сдвинутой вправо на n позиций.
Исключение:
ArithmeticException - если масштаб переполняется.

scaleByPowerOfTen

public BigDecimal scaleByPowerOfTen(int n)
Возвращает BigDecimal, чётное значение которого равно (this * 10n). Масштаб результата равен (this.scale() - n).
Параметры:
n - показатель степени десяти для масштабирования
Возвращает:
a BigDecimal, чётное значение которого равно (this * 10n)
Исключение:
ArithmeticException - если масштаб будет находиться вне диапазона 32-битного целого числа.
С:
1.5

stripTrailingZeros

public BigDecimal stripTrailingZeros()
Возвращает BigDecimal, который численно равен этому, но с удаленными любыми конечными нулями из представления. Например, удаление конечных нулей из значения BigDecimal 600.0, у которого компоненты [BigInteger, scale] равны [6000, 1], даёт 6E2 с компонентами [BigInteger, scale] равными [6, -2]. Если этот BigDecimal численно равен нулю, то возвращается BigDecimal.ZERO.
Возвращает:
числовой эквивалент BigDecimal с удалёнными конечными нулями.
Исключение:
ArithmeticException - если масштаб переполняется.
С:
1.5

compareTo

public int compareTo(BigDecimal val)
Числовое сравнение этого BigDecimal с указанным BigDecimal. Два объекта BigDecimal , равные по значению, но имеющие разные масштабы (например, 2,0 и 2,00), считаются равными этим методом. Такие значения находятся в одном и том же когорте. Этот метод предлагается вместо отдельных методов для каждого из шести булевых операторов сравнения (<, ==, >, >=, !=, <=). Предлагаемый идиома для выполнения этих сравнений: (x.compareTo(y) <op> 0), где <op> - один из шести операторов сравнения.
Определено в:
compareTo в интерфейсе Comparable<BigDecimal>
Примечание API:
Примечание: этот класс имеет естественный порядок, несовместимый с equals. Поведение сравнения результата этого метода на равенство 0 аналогично проверке числового равенства значений double.
Параметры:
val - BigDecimal, с которым должно быть сравнено это BigDecimal.
Возвращает:
-1, 0 или 1, если этот BigDecimal численно меньше, равен или больше val.

equals

public boolean equals(Object x)
Сравнивает этот BigDecimal с указанным Object на равенство. В отличие от compareTo, этот метод считает два BigDecimal объекта равными только в том случае, если они равны по значению и масштабу. Поэтому 2.0 не равно 2.00 при сравнении этим методом, так как первый имеет компоненты [BigInteger, scale] равные [20, 1], а второй имеет компоненты, равные [200, 2].
Overrides:
equals в классе Object
API Note:
Один пример, который показывает, как 2.0 и 2.00 не являются взаимозаменяемыми при некоторых арифметических операциях, — это два выражения:
new BigDecimal("2.0" ).divide(BigDecimal.valueOf(3), HALF_UP) которое вычисляется как 0,7 и
new BigDecimal("2.00").divide(BigDecimal.valueOf(3), HALF_UP) которое вычисляется как 0,67. Поведение этого метода аналогично проверке эквивалентности представления double значений.
Parameters:
x - Object, с которым должен быть сравнен этот BigDecimal.
Returns:
true тогда и только тогда, когда указанный Object является BigDecimal, значение и масштаб которого равны этому BigDecimal.
See Also:
  • compareTo(java.math.BigDecimal)
  • hashCode()

min

public BigDecimal min(BigDecimal val)
Возвращает минимальное значение этого BigDecimal и val.
Parameters:
val - значение, с которым вычисляется минимум.
Returns:
BigDecimal , значение которого является меньшим из этого BigDecimal и val . Если они равны, как определено методом compareTo, возвращается this.
See Also:
  • compareTo(java.math.BigDecimal)

max

public BigDecimal max(BigDecimal val)
Возвращает максимальное значение этого BigDecimal и val.
Parameters:
val - значение, с которым вычисляется максимум.
Returns:
BigDecimal , значение которого является большим из этого BigDecimal и val. Если они равны, как определено методом compareTo, возвращается this.
See Also:
  • compareTo(java.math.BigDecimal)

hashCode

public int hashCode()
Возвращает код хэширования для этого BigDecimal. Код хэширования вычисляется как функция от неизменённого значения и масштаба этого BigDecimal.
Overrides:
hashCode в классе Object
API Note:
Два BigDecimal объекта, которые численно равны, но отличаются по масштабу (например, 2.0 и 2.00), обычно не будут иметь одинаковый код хэширования.
Returns:
код хэширования для этого BigDecimal.
See Also:
  • equals(Object)

toString

public String toString()
Возвращает строковое представление этого BigDecimal, используя научную запись, если необходим экспоненциальный вид.

Создается стандартная каноническая строковая форма BigDecimal, как если бы это происходило следующим образом: сначала абсолютное значение неизменённого значения BigDecimal преобразуется в строку в десятичной системе счисления, используя символы от '0' до '9', без ведущих нулей (за исключением случая, если его значение равно нулю, в этом случае используется один символ '0').

Далее, вычисляется скорректированный экспонент; это отрицательный масштаб плюс количество символов в преобразованном неизменённом значении минус один. То есть -scale+(ulength-1), где ulength — длина абсолютного значения неизменённого значения в десятичных разрядах (его точность).

Если масштаб неотрицателен и скорректированный экспонент не меньше -6, число преобразуется в строковую форму без использования экспоненциальной записи. В этом случае, если масштаб равен нулю, десятичная точка не добавляется, а если масштаб положителен, десятичная точка вставляется с масштабом, определяющим количество символов справа от десятичной точки. Символы '0' добавляются слева от преобразованного неизменённого значения, если необходимо. Если перед десятичной точкой не будет символа после этой вставки, то предписывается обычный символ '0'.

В противном случае (то есть, если масштаб отрицателен или скорректированный экспонент меньше -6), число преобразуется в строковую форму с использованием экспоненциальной записи. В этом случае, если преобразованное BigInteger имеет более одной цифры, десятичная точка вставляется после первой цифры. Затем к преобразованному неизменённому значению (возможно, с вставленной десятичной точкой) добавляется экспонента в строковом формате; она состоит из буквы 'E', сразу за которой следует скорректированный экспонент, преобразованный в строковую форму. Последний представлен в десятичной системе счисления, используя символы от '0' до '9' без ведущих нулей и всегда предваряется знаком '-' ('\u002D') если скорректированный экспонент отрицательный, '+' ('\u002B') в противном случае).

Наконец, вся строка предваряется знаком минус '-' ('\u002D') если неизменённое значение меньше нуля. Знак не добавляется, если неизменённое значение равно нулю или положительно.

Примеры:

Для каждого представления [неизменённое значение, масштаб] слева показана результирующая строка справа.

 [123,0]      "123"
 [-123,0]     "-123"
 [123,-1]     "1.23E+3"
 [123,-3]     "1.23E+5"
 [123,1]      "12.3"
 [123,5]      "0.00123"
 [123,10]     "1.23E-8"
 [-123,12]    "-1.23E-10"
 
Примечания:
  1. Существует взаимно однозначное соответствие между различимыми значениями BigDecimal и результатом этого преобразования. То есть, каждое различимое значение BigDecimal (неизменённое значение и масштаб) имеет уникальное строковое представление в результате использования toString. Если это строковое представление преобразовать обратно в BigDecimal, используя конструктор BigDecimal(String), то исходное значение будет восстановлено.
  2. Строка, сгенерированная для данного числа, всегда одинакова; она не зависит от локали. Это означает, что она может использоваться в качестве канонического строкового представления для обмена десятичными данными или в качестве ключа для Hashtable и т. п. Локализованный формат и разбор чисел обрабатываются классом NumberFormat и его подклассами.
  3. Метод toEngineeringString() может использоваться для представления чисел с экспонентами в инженерной нотации, а метод setScale может использоваться для округления BigDecimal таким образом, чтобы имелось известное количество цифр после десятичной точки.
  4. Используется отображение цифр в символы, предоставляемое Character.forDigit.
Overrides:
toString в классе Object
Returns:
строковое представление этого BigDecimal.
See Also:
  • Character.forDigit(int, int)
  • BigDecimal(java.lang.String)

toEngineeringString

public String toEngineeringString()
Возвращает строковое представление этого BigDecimal, используя инженерную нотацию, если необходим экспоненциальный вид.

Возвращает строку, представляющую BigDecimal , как описано в методе toString(), за исключением того, что, если используется экспоненциальная нотация, степень десяти изменяется, чтобы быть кратной трём (инженерная нотация) таким образом, что целая часть ненулевых значений будет в диапазоне от 1 до 999. Если экспоненциальная нотация используется для нулевых значений, используется десятичная точка и одна или две дробные нулевые цифры, чтобы сохранить масштаб нулевого значения. Обратите внимание, что в отличие от вывода метода toString(), вывод этого метода не гарантирует восстановление той же пары [целое число, масштаб] этого BigDecimal при преобразовании выходной строки обратно в BigDecimal с помощью конструктора строк. Результат этого метода удовлетворяет более слабому ограничению, всегда создавая численно равный результат, применяя конструктор строк к результату метода.

Returns:
строковое представление этого BigDecimal, используя инженерную нотацию, если необходим экспоненциальный вид.
Since:
1.5

toPlainString

public String toPlainString()
Возвращает строковое представление этого BigDecimal без поля экспоненты. Для значений с положительной шкалой количество цифр справа от десятичной точки используется для указания шкалы. Для значений с нулевой или отрицательной шкалой результирующая строка генерируется так, как если бы значение было преобразовано в численно равное значение с нулевой шкалой и как если бы все последующие нули значения с нулевой шкалой были присутствуют в результате. Вся строка предваряется символом минус '-' ('\u002D') если значение без масштаба меньше нуля. Символ знака не предваряется, если значение без масштаба равно нулю или положительно. Обратите внимание, что если результат этого метода передается в конструктор строки конструтор строки, то будет восстановлено только числовое значение этого BigDecimal; представление нового BigDecimal может иметь другую шкалу. В частности, если у этого BigDecimal отрицательная шкала, строка, полученная в результате этого метода, будет иметь шкалу ноль при обработке конструктором строки. (Этот метод работает аналогично методу toString в версиях 1.4 и более ранних.)
Возвращает:
строковое представление этого BigDecimal без поля экспоненты.
С:
1.5
См. также:
  • toString()
  • toEngineeringString()

toBigInteger

public BigInteger toBigInteger()
Преобразует это BigDecimal в BigInteger. Это преобразование аналогично преобразованию примитивных типов сужения из double в long, как определено в Спецификации языка Java: любая дробная часть этого BigDecimal будет отброшена. Обратите внимание, что при этом преобразовании может быть потеряна информация о точности значения BigDecimal.

Чтобы бросить исключение, если преобразование неточно (другими словами, если отбрасывается ненулевая дробная часть), используйте метод toBigIntegerExact().

Возвращает:
это BigDecimal преобразованное в BigInteger.
См. Спецификацию языка Java:
5.1.3 Преобразование примитивных типов сужения

toBigIntegerExact

public BigInteger toBigIntegerExact()
Преобразует это BigDecimal в BigInteger, проверяя потерю информации. Если у этого BigDecimal есть ненулевая дробная часть, выбрасывается исключение.
Возвращает:
это BigDecimal преобразованное в BigInteger.
Выбрасывает:
ArithmeticException - если у this есть ненулевая дробная часть.
С:
1.5

longValue

public long longValue()
Преобразует это BigDecimal в long. Это преобразование аналогично преобразованию примитивных типов сужения из double в short, как определено в Спецификации языка Java: любая дробная часть этого BigDecimal будет отброшена, и если полученное «BigInteger» слишком велико для размещения в long, возвращаются только младшие 64 бита. Обратите внимание, что при этом преобразовании может быть потеряна информация о величине и точности этого BigDecimal значения, а также может быть возвращен результат с противоположным знаком.
Определено в:
longValue в классе Number
Возвращает:
это BigDecimal преобразованное в long.
См. Спецификацию языка Java:
5.1.3 Преобразование примитивных типов сужения

longValueExact

public long longValueExact()
Преобразует это BigDecimal в long, проверяя потерю информации. Если у этого BigDecimal есть ненулевая дробная часть или она не умещается в long результат, выбрасывается ArithmeticException.
Возвращает:
это BigDecimal преобразованное в long.
Выбрасывает:
ArithmeticException - если у this есть ненулевая дробная часть или она не умещается в long.
С:
1.5

intValue

public int intValue()
Преобразует это BigDecimal в int. Это преобразование аналогично преобразованию примитивных типов сужения из double в short, как определено в Спецификации языка Java: любая дробная часть этого BigDecimal будет отброшена, и если полученное «BigInteger» слишком велико для размещения в int, возвращаются только младшие 32 бита. Обратите внимание, что при этом преобразовании может быть потеряна информация о величине и точности этого BigDecimal значения, а также может быть возвращен результат с противоположным знаком.
Определено в:
intValue в классе Number
Возвращает:
это BigDecimal преобразованное в int.
См. Спецификацию языка Java:
5.1.3 Преобразование примитивных типов сужения

intValueExact

public int intValueExact()
Преобразует это BigDecimal в int, проверяя потерю информации. Если у этого BigDecimal есть ненулевая дробная часть или она не умещается в int результат, выбрасывается ArithmeticException.
Возвращает:
это BigDecimal преобразованное в int.
Выбрасывает:
ArithmeticException - если у this есть ненулевая дробная часть или она не умещается в int.
С:
1.5

shortValueExact

public short shortValueExact()
Преобразует это BigDecimal в short, проверяя потерю информации. Если у этого BigDecimal есть ненулевая дробная часть или она не умещается в short результат, выбрасывается ArithmeticException.
Возвращает:
это BigDecimal преобразованное в short.
Выбрасывает:
ArithmeticException - если у this есть ненулевая дробная часть или она не умещается в short.
С:
1.5

byteValueExact

public byte byteValueExact()
Преобразует это BigDecimal в byte, проверяя потерю информации. Если у этого BigDecimal есть ненулевая дробная часть или она не умещается в byte результат, выбрасывается ArithmeticException.
Возвращает:
это BigDecimal преобразованное в byte.
Выбрасывает:
ArithmeticException - если у this есть ненулевая дробная часть или она не умещается в byte.
С:
1.5

floatValue

public float floatValue()
Преобразует это BigDecimal в float. Это преобразование аналогично преобразованию примитивных типов сужения из double в float, как определено в Спецификации языка Java: если у этого BigDecimal слишком большая величина для представления в виде float, она будет преобразована в Float.NEGATIVE_INFINITY или Float.POSITIVE_INFINITY соответственно. Обратите внимание, что даже когда возвращаемое значение конечно, это преобразование может потерять информацию о точности значения BigDecimal.
Определено в:
floatValue в классе Number
Возвращает:
это BigDecimal преобразованное в float.
См. Спецификацию языка Java:
5.1.3 Преобразование примитивных типов сужения

doubleValue

public double doubleValue()
Преобразует это BigDecimal в double. Это преобразование аналогично преобразованию примитивных типов сужения из double в float, как определено в Спецификации языка Java: если у этого BigDecimal слишком большая величина для представления в виде double, она будет преобразована в Double.NEGATIVE_INFINITY или Double.POSITIVE_INFINITY соответственно. Обратите внимание, что даже когда возвращаемое значение конечно, это преобразование может потерять информацию о точности значения BigDecimal.
Определено в:
doubleValue в классе Number
Возвращает:
это BigDecimal преобразованное в double.
См. Спецификацию языка Java:
5.1.3 Преобразование примитивных типов сужения

ulp

public BigDecimal ulp()
Возвращает размер ulp (единицы в последнем разряде) для этого BigDecimal. ULP ненулевого BigDecimal значения — это положительное расстояние между этим значением и ближайшим значением большей величины с тем же количеством цифр. ULP нулевого значения численно равно 1 с масштабом this. Результат хранится с тем же масштабом, что и this, поэтому результат для нулевых и ненулевых значений равен [1, this.scale()].
Возвращает:
размер ulp для this
С:
1.5

© 1993, 2023, 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/21/docs/api/java.base/java/math/BigDecimal.html

Spec-Zone.ru

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