Spec-Zone .ru
спецификации, руководства, описания, API
|
public class BigDecimal extends Number implements Comparable<BigDecimal>
BigDecimal
состоит из целого числа произвольной точности немасштабируемое значение и 32-разрядный целочисленный масштаб. Если нуль или положительный, масштаб является числом цифр направо от десятичной точки. Если отрицание, немасштабируемое значение числа умножается на десять к питанию отрицания масштаба. Значение числа, представленного BigDecimal
поэтому (unscaledValue × 10-scale). BigDecimal
class обеспечивает операции для арифметики, манипулирование масштабом, округление, сравнение, хеширование, и преобразование формата. toString()
метод обеспечивает каноническое представление a BigDecimal
.
BigDecimal
class дает свой пользовательский полный контроль над округлением поведения. Если никакой режим округления не определяется, и точный результат не может быть представлен, исключение выдается; иначе, вычисления могут быть выполнены к выбранной точности и округлению режима, предоставляя соответствующее MathContext
возразите против работы. В любом случае восемь округляющихся режимов обеспечиваются для управления округления. Используя целочисленные поля в этом class (такой как ROUND_HALF_UP
) представлять округление режима является в значительной степени устаревшим; перечислимые величины RoundingMode
enum
, (такой как RoundingMode.HALF_UP
) должен использоваться вместо этого.
Когда a MathContext
объект предоставляется установкой точности 0 (например, MathContext.UNLIMITED
), арифметические операции точны, как арифметические методы, которые берут нет MathContext
объект. (Это - единственное поведение, которое поддерживалось в выпусках до 5.) Как заключение вычислений точного результата, округляющейся установки режима a MathContext
объект с установкой точности 0 не используется и таким образом не важный. В случае дележа у точного частного могло быть бесконечно долгое десятичное расширение; например, 1 разделенный на 3. Если у частного есть расширение бесконечной десятичной дроби, и работа определяется, чтобы возвратить точный результат, ArithmeticException
бросается. Иначе, точный результат подразделения возвращается, как сделано для других операций.
Когда установка точности не 0, правила BigDecimal
арифметика является широко совместимой с выбранными режимами работы арифметики, определенной в ANSI X3.274-1996 и ANSI X3.274-1996/AM 1-2000 (раздел 7.4). В отличие от тех стандартов, BigDecimal
включает много округляющихся режимов, которые были обязательны для подразделения в BigDecimal
выпуски до 5. Любые конфликты между этими стандартами ANSI и BigDecimal
спецификация разрешается в пользу BigDecimal
.
Так как у того же самого численного значения могут быть различные представления (с различными масштабами), правила арифметики и округления должны определить и числовой результат и масштаб, используемый в представлении результата.
Вообще округляющиеся режимы и установка точности определяют, как операции возвращают результаты с ограниченным количеством цифр, когда у точного результата есть больше цифр (возможно, бесконечно многие в случае подразделения) чем число возвращенных цифр. Во-первых, общее количество цифр, чтобы возвратиться определяется MathContext
's precision
установка; это определяет точность результата. Количество цифры запускается с крайней левой ненулевой цифры точного результата. Округляющийся режим определяет, как любой отброшенное запаздывание цифр влияет на возвращенный результат.
Для всех арифметических операторов выполняется работа, как если бы точный промежуточный результат был сначала вычислен и затем округлился к числу цифр, определенных точностью, устанавливающей (в случае необходимости), используя выбранный режим округления. Если точный результат не возвращается, некоторые позиции символа точного результата отбрасываются. Округляя увеличения величина возвращенного результата, для новой позиции символа возможно быть созданным распространением переноса к продвижению "9" цифра. Например, округление значения 999.9 к трем окружающим цифрам было бы в цифровой форме равно одна тысяча, представленный как 100×101. В таких случаях новой "1" является ведущая позиция символа возвращенного результата.
Помимо логического точного результата, у каждой арифметической работы есть привилегированный масштаб для того, чтобы представить результат. Привилегированный масштаб для каждой работы перечисляется в таблице ниже.
Работа | Привилегированный Масштаб Результата |
---|---|
Добавить | максимальный (addend.scale (), augend.scale ()) |
Вычесть | максимальный (minuend.scale (), subtrahend.scale ()) |
Умножиться | multiplier.scale () + multiplicand.scale () |
Разделиться | dividend.scale () - divisor.scale () |
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.
Два типа операций обеспечиваются для того, чтобы они управляли масштабом a BigDecimal
: масштабирование/округление операций и операций движения десятичной точки. Масштабирование/округление операций (setScale
и round
) возвратите a BigDecimal
чье значение приблизительно (или точно) равно тому из операнда, но чей масштаб или точность являются указанным значением; то есть, они увеличивают или уменьшают точность сохраненного числа с минимальным эффектом на его значение. Операции движения десятичной точки (movePointLeft
и movePointRight
) возвратите a BigDecimal
создаваемый из операнда, перемещая десятичную точку указанное расстояние в указанное направление.
Ради краткости и ясности, псевдокод используется всюду по описаниям BigDecimal
методы. Выражение псевдокода (i + j)
сокращение для "a BigDecimal
чье значение является значением BigDecimal
i
добавленный к тому из BigDecimal
j
." Выражение псевдокода (i == j)
сокращение для"true
если и только если BigDecimal
i
представляет то же самое значение как BigDecimal
j
." Другие выражения псевдокода интерпретируются так же. Квадратные скобки используются, чтобы представить деталь BigInteger
и пара масштаба, определяющая a BigDecimal
значение; например [19, 2] BigDecimal
в цифровой форме равный 0.19 наличию масштаба 2.
Отметьте: забота должна быть осуществлена если BigDecimal
объекты используются в качестве ключей a SortedMap
или элементы в a SortedSet
с тех пор BigDecimal
's естественное упорядочивание непоследовательно с, равняется. См. Comparable
, SortedMap
или SortedSet
для получения дополнительной информации.
Все методы и конструкторы для этого броска class NullPointerException
когда передано a null
ссылка на объект для любого входного параметра.
BigInteger
, MathContext
, RoundingMode
, SortedMap
, SortedSet
, Сериализированная ФормаМодификатор и Тип | Поле и Описание |
---|---|
static BigDecimal |
ОДИН
Значение 1, с масштабом 0.
|
static int |
ROUND_CEILING
Округление режима к раунду к положительной бесконечности.
|
static int |
ROUND_DOWN
Округление режима к раунду к нулю.
|
static int |
ROUND_FLOOR
Округление режима к раунду к отрицательной бесконечности.
|
static int |
ROUND_HALF_DOWN
Округление режима к раунду к "самому близкому соседу", если оба соседа не являются равноотстоящими, когда округляют в меньшую сторону.
|
static int |
ROUND_HALF_EVEN
Округление режима к раунду к "самому близкому соседу", если оба соседа не являются равноотстоящими, когда, вокруг к даже граничат.
|
static int |
ROUND_HALF_UP
Округление режима к раунду к "самому близкому соседу", если оба соседа не являются равноотстоящими, когда окружают.
|
static int |
ROUND_UNNECESSARY
Округляя режим, чтобы утверждать, что у требуемой работы есть точный результат, следовательно никакое округление не необходимо.
|
static int |
ROUND_UP
Округление режима к раунду далеко от нуля.
|
static BigDecimal |
ДЕСЯТЬ
Значение 10, с масштабом 0.
|
static BigDecimal |
НУЛЬ
Значение 0, с масштабом 0.
|
Конструктор и Описание |
---|
BigDecimal(BigInteger val)
Преобразовывает a
BigInteger в a BigDecimal . |
BigDecimal(BigInteger unscaledVal, int scale)
Преобразовывает a
BigInteger немасштабируемое значение и int масштаб в a BigDecimal . |
BigDecimal(BigInteger unscaledVal, int scale, MathContext mc)
Преобразовывает a
BigInteger немасштабируемое значение и int масштаб в a BigDecimal , с округлением согласно настройкам контекста. |
BigDecimal(BigInteger val, MathContext mc)
Преобразовывает a
BigInteger в a BigDecimal округление согласно настройкам контекста. |
BigDecimal(char[] in)
Преобразовывает символьное представление в виде массива a
BigDecimal в a BigDecimal , принятие той же самой последовательности символов как BigDecimal(String) конструктор. |
BigDecimal(char[] in, int offset, int len)
Преобразовывает символьное представление в виде массива a
BigDecimal в a BigDecimal , принятие той же самой последовательности символов как BigDecimal(String) конструктор, позволяя подмассив быть определенным. |
BigDecimal(char[] in, int offset, int len, MathContext mc)
Преобразовывает символьное представление в виде массива a
BigDecimal в a BigDecimal , принятие той же самой последовательности символов как BigDecimal(String) конструктор, позволяя подмассив быть определенным и с округлением согласно настройкам контекста. |
BigDecimal(char[] in, MathContext mc)
Преобразовывает символьное представление в виде массива a
BigDecimal в a BigDecimal , принятие той же самой последовательности символов как BigDecimal(String) конструктор и с округлением согласно настройкам контекста. |
BigDecimal(double val)
Преобразовывает a
double в a BigDecimal который является точным десятичным представлением double 's двоичное значение с плавающей точкой. |
BigDecimal(double val, MathContext mc)
Преобразовывает a
double в a BigDecimal , с округлением согласно настройкам контекста. |
BigDecimal(int val)
Преобразовывает
int в a BigDecimal . |
BigDecimal(int val, MathContext mc)
Преобразовывает
int в a BigDecimal , с округлением согласно настройкам контекста. |
BigDecimal(long val)
Преобразовывает a
long в a BigDecimal . |
BigDecimal(long val, MathContext mc)
Преобразовывает a
long в a BigDecimal , с округлением согласно настройкам контекста. |
BigDecimal(String val)
Преобразовывает строковое представление a
BigDecimal в a BigDecimal . |
BigDecimal(String val, MathContext mc)
Преобразовывает строковое представление a
BigDecimal в a BigDecimal , принятие тех же самых строк как BigDecimal(String) конструктор, с округлением согласно настройкам контекста. |
Модификатор и Тип | Метод и Описание |
---|---|
BigDecimal |
abs()
Возвраты a
BigDecimal чье значение является абсолютным значением этого BigDecimal , и чей масштаб this.scale() . |
BigDecimal |
abs(MathContext mc)
Возвраты a
BigDecimal чье значение является абсолютным значением этого BigDecimal , с округлением согласно настройкам контекста. |
BigDecimal |
add(BigDecimal augend)
Возвраты a
BigDecimal чье значение (this + augend) , и чей масштаб max(this.scale(), augend.scale()) . |
BigDecimal |
add(BigDecimal augend, MathContext mc)
Возвраты a
BigDecimal чье значение (this + augend) , с округлением согласно настройкам контекста. |
byte |
byteValueExact()
Преобразовывает это
BigDecimal к a byte , проверка потерянную информацию. |
int |
compareTo(BigDecimal val)
Сравнивает это
BigDecimal с указанным BigDecimal . |
BigDecimal |
divide(BigDecimal divisor)
Возвраты a
BigDecimal чье значение (this / divisor) , и чей привилегированный масштаб (this.scale() - divisor.scale()) ; если точное частное не может быть представлено (потому что у него есть расширение бесконечной десятичной дроби), ArithmeticException бросается. |
BigDecimal |
divide(BigDecimal divisor, int roundingMode)
Возвраты a
BigDecimal чье значение (this / divisor) , и чей масштаб this.scale() . |
BigDecimal |
divide(BigDecimal divisor, int scale, int roundingMode)
Возвраты a
BigDecimal чье значение (this / divisor) , и чей масштаб как определяется. |
BigDecimal |
divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
Возвраты a
BigDecimal чье значение (this / divisor) , и чей масштаб как определяется. |
BigDecimal |
divide(BigDecimal divisor, MathContext mc)
Возвраты a
BigDecimal чье значение (this / divisor) , с округлением согласно настройкам контекста. |
BigDecimal |
divide(BigDecimal divisor, RoundingMode roundingMode)
Возвраты a
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)
Возвраты a
BigDecimal чье значение является целой частью частного (this / divisor) округленный в меньшую сторону. |
BigDecimal |
divideToIntegralValue(BigDecimal divisor, MathContext mc)
Возвраты a
BigDecimal чье значение является целой частью (this / divisor) . |
double |
doubleValue()
Преобразовывает это
BigDecimal к a double . |
boolean |
equals(Object x)
Сравнивает это
BigDecimal с указанным Object для равенства. |
float |
floatValue()
Преобразовывает это
BigDecimal к a float . |
int |
hashCode()
Возвращает хэш-код для этого
BigDecimal . |
int |
intValue()
Преобразовывает это
BigDecimal к int . |
int |
intValueExact()
Преобразовывает это
BigDecimal к int , проверка потерянную информацию. |
long |
longValue()
Преобразовывает это
BigDecimal к a long . |
long |
longValueExact()
Преобразовывает это
BigDecimal к a long , проверка потерянную информацию. |
BigDecimal |
max(BigDecimal val)
Возвращает максимум этого
BigDecimal и val . |
BigDecimal |
min(BigDecimal val)
Возвращает минимум этого
BigDecimal и val . |
BigDecimal |
movePointLeft(int n)
Возвраты a
BigDecimal который эквивалентен этому с перемещенной десятичной точкой n места налево. |
BigDecimal |
movePointRight(int n)
Возвраты a
BigDecimal который эквивалентен этому с перемещенной десятичной точкой n места направо. |
BigDecimal |
multiply(BigDecimal multiplicand)
Возвраты a
BigDecimal чье значением является (this × multiplicand), и чей масштаб (this.scale() + multiplicand.scale()) . |
BigDecimal |
multiply(BigDecimal multiplicand, MathContext mc)
Возвраты a
BigDecimal чье значением является (this × multiplicand) с округлением согласно настройкам контекста. |
BigDecimal |
negate()
Возвраты a
BigDecimal чье значение (-this) , и чей масштаб this.scale() . |
BigDecimal |
negate(MathContext mc)
Возвраты a
BigDecimal чье значение (-this) , с округлением согласно настройкам контекста. |
BigDecimal |
plus()
Возвраты a
BigDecimal чье значение (+this) , и чей масштаб this.scale() . |
BigDecimal |
plus(MathContext mc)
Возвраты a
BigDecimal чье значение (+this) , с округлением согласно настройкам контекста. |
BigDecimal |
pow(int n)
Возвраты a
BigDecimal чье значением является (thisn), питание вычисляется точно к неограниченной точности. |
BigDecimal |
pow(int n, MathContext mc)
Возвраты a
BigDecimal чье значением является (thisn). |
int |
precision()
Возвращает точность этого
BigDecimal . |
BigDecimal |
remainder(BigDecimal divisor)
Возвраты a
BigDecimal чье значение (this % divisor) . |
BigDecimal |
remainder(BigDecimal divisor, MathContext mc)
Возвраты a
BigDecimal чье значение (this % divisor) , с округлением согласно настройкам контекста. |
BigDecimal |
round(MathContext mc)
Возвраты a
BigDecimal округленный согласно MathContext настройки. |
int |
scale()
Возвращает масштаб этого
BigDecimal . |
BigDecimal |
scaleByPowerOfTen(int n)
Возвращает BigDecimal, численное значение которого равно (
this * 10n). |
BigDecimal |
setScale(int newScale)
Возвраты a
BigDecimal чей масштаб является указанным значением, и чье значение в цифровой форме равно этому BigDecimal 's. |
BigDecimal |
setScale(int newScale, int roundingMode)
Возвраты a
BigDecimal чей масштаб является указанным значением, и чье немасштабируемое значение определяется, умножаясь или деля это BigDecimal 's немасштабируемое значение соответствующим питанием десять, чтобы поддержать его полное значение. |
BigDecimal |
setScale(int newScale, RoundingMode roundingMode)
Возвраты a
BigDecimal чей масштаб является указанным значением, и чье немасштабируемое значение определяется, умножаясь или деля это BigDecimal 's немасштабируемое значение соответствующим питанием десять, чтобы поддержать его полное значение. |
short |
shortValueExact()
Преобразовывает это
BigDecimal к a short , проверка потерянную информацию. |
int |
signum()
Возвращает сигнум-функцию этого
BigDecimal . |
BigDecimal |
stripTrailingZeros()
Возвраты a
BigDecimal который в цифровой форме равен этому, но с любыми конечными нулями, удаленными из представления. |
BigDecimal |
subtract(BigDecimal subtrahend)
Возвраты a
BigDecimal чье значение (this - subtrahend) , и чей масштаб max(this.scale(), subtrahend.scale()) . |
BigDecimal |
subtract(BigDecimal subtrahend, MathContext mc)
Возвраты a
BigDecimal чье значение (this - subtrahend) , с округлением согласно настройкам контекста. |
BigInteger |
toBigInteger()
Преобразовывает это
BigDecimal к a BigInteger . |
BigInteger |
toBigIntegerExact()
Преобразовывает это
BigDecimal к a BigInteger , проверка потерянную информацию. |
Строка |
toEngineeringString()
Возвращает строковое представление этого
BigDecimal , использование технической нотации, если экспонента необходима. |
Строка |
toPlainString()
Возвращает строковое представление этого
BigDecimal без поля экспоненты. |
Строка |
toString()
Возвращает строковое представление этого
BigDecimal , использование экспоненциального представления, если экспонента необходима. |
BigDecimal |
ulp()
Возвращает размер ulp, модуля в последнем месте, этого
BigDecimal . |
BigInteger |
unscaledValue()
Возвраты a
BigInteger чье значение является немасштабируемым значением этого BigDecimal . |
static BigDecimal |
valueOf(double val)
Преобразовывает a
double в a BigDecimal , использование double 's каноническое строковое представление, обеспеченное Double.toString(double) метод. |
static BigDecimal |
valueOf(long val)
Преобразовывает a
long значение в a BigDecimal с масштабом нуля. |
static BigDecimal |
valueOf(long unscaledVal, int scale)
Преобразовывает a
long немасштабируемое значение и int масштаб в a BigDecimal . |
byteValue, shortValue
public static final BigDecimal ZERO
public static final BigDecimal ONE
public static final BigDecimal TEN
public static final int ROUND_UP
public static final int ROUND_DOWN
public static final int ROUND_CEILING
BigDecimal
положительно, ведет себя что касается ROUND_UP
; если отрицание, ведет себя что касается ROUND_DOWN
. Отметьте, что этот режим округления никогда не уменьшает расчетное значение.public static final int ROUND_FLOOR
BigDecimal
положительно, ведите себя что касается ROUND_DOWN
; если отрицание, ведите себя что касается ROUND_UP
. Отметьте, что этот режим округления никогда не увеличивает расчетное значение.public static final int ROUND_HALF_UP
ROUND_UP
если отброшенная часть является ≥ 0.5; иначе, ведет себя что касается ROUND_DOWN
. Отметьте, что это - округляющийся режим, который большинству из нас преподавали в начальной школе.public static final int ROUND_HALF_DOWN
ROUND_UP
если отброшенная часть> 0.5; иначе, ведет себя что касается ROUND_DOWN
.public static final int ROUND_HALF_EVEN
ROUND_HALF_UP
если цифра налево от отброшенной части нечетна; ведет себя что касается ROUND_HALF_DOWN
если это даже. Отметьте, что это - округляющийся режим, который минимизирует совокупную ошибку когда применено неоднократно по последовательности вычислений.public static final int ROUND_UNNECESSARY
ArithmeticException
бросается.public BigDecimal(char[] in, int offset, int len)
BigDecimal
в a BigDecimal
, принятие той же самой последовательности символов как BigDecimal(String)
конструктор, позволяя подмассив быть определенным. Отметьте, что, если последовательность символов уже доступна в пределах символьного массива, используя этого конструктора, быстрее чем преобразование char
выстройте, чтобы представить в виде строки и использование BigDecimal(String)
конструктор.
in
- char
массив, который является источником символов.offset
- первый символ в массиве, который осмотрит.len
- число символов, чтобы рассмотреть.NumberFormatException
- если in
не допустимое представление a BigDecimal
или определенный подмассив не полностью в пределах in
.public BigDecimal(char[] in, int offset, int len, MathContext mc)
BigDecimal
в a BigDecimal
, принятие той же самой последовательности символов как BigDecimal(String)
конструктор, позволяя подмассив быть определенным и с округлением согласно настройкам контекста. Отметьте, что, если последовательность символов уже доступна в пределах символьного массива, используя этого конструктора, быстрее чем преобразование char
выстройте, чтобы представить в виде строки и использование BigDecimal(String)
конструктор.
in
- char
массив, который является источником символов.offset
- первый символ в массиве, который осмотрит.len
- число символов, чтобы рассмотреть..mc
- контекст, чтобы использовать.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
.NumberFormatException
- если in
не допустимое представление a BigDecimal
или определенный подмассив не полностью в пределах in
.public BigDecimal(char[] in)
BigDecimal
в a BigDecimal
, принятие той же самой последовательности символов как BigDecimal(String)
конструктор. Отметьте, что, если последовательность символов уже доступна как символьный массив, используя этого конструктора, быстрее чем преобразование char
выстройте, чтобы представить в виде строки и использование BigDecimal(String)
конструктор.
in
- char
массив, который является источником символов.NumberFormatException
- если in
не допустимое представление a BigDecimal
.public BigDecimal(char[] in, MathContext mc)
BigDecimal
в a BigDecimal
, принятие той же самой последовательности символов как BigDecimal(String)
конструктор и с округлением согласно настройкам контекста. Отметьте, что, если последовательность символов уже доступна как символьный массив, используя этого конструктора, быстрее чем преобразование char
выстройте, чтобы представить в виде строки и использование BigDecimal(String)
конструктор.
in
- char
массив, который является источником символов.mc
- контекст, чтобы использовать.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
.NumberFormatException
- если in
не допустимое представление a BigDecimal
.public BigDecimal(String val)
BigDecimal
в a BigDecimal
. Строковое представление состоит из дополнительного знака, '+'
( '\u002B') или '-'
('\u002D'), сопровождаемый последовательностью нуля или большего количества десятичных цифр ("целое число"), дополнительно сопровождаемый частью, дополнительно сопровождаемой экспонентой. Часть состоит из десятичной точки, сопровождаемой нулем или большим количеством десятичных цифр. Строка должна содержать по крайней мере одну цифру или в целом числе или в части. Число, сформированное знаком, целым числом и частью, упоминается как мантисса.
Экспонента состоит из символа 'e'
('\u0065') или 'E'
('\u0045'), сопровождаемый одной или более десятичными цифрами. Значение экспоненты должно находиться между -Integer.MAX_VALUE
(Integer.MIN_VALUE
+1) и Integer.MAX_VALUE
, включительно.
Более формально строки, которые принимает этот конструктор, описываются следующей грамматикой:
- BigDecimalString:
- Мантисса Signopt Exponentopt
- Знак:
+
-
- Мантисса:
- IntegerPart
.
FractionPartopt.
FractionPart- IntegerPart
- IntegerPart:
- Цифры
- FractionPart:
- Цифры
- Экспонента:
- ExponentIndicator SignedInteger
- ExponentIndicator:
e
E
- SignedInteger:
- Цифры Signopt
- Цифры:
- Цифра
- Цифра цифр
- Цифра:
- любой символ тот, для который
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]
Отметьте: Для значений кроме float
и double
НЭН и ±Infinity, этот конструктор является совместимым со значениями, возвращенными Float.toString(float)
и Double.toString(double)
. Это - обычно привилегированный способ преобразовать a float
или double
в BigDecimal, поскольку это не страдает от непредсказуемости BigDecimal(double)
конструктор.
val
- Строковое представление BigDecimal
.NumberFormatException
- если val
не допустимое представление a BigDecimal
.public BigDecimal(String val, MathContext mc)
BigDecimal
в a BigDecimal
, принятие тех же самых строк как BigDecimal(String)
конструктор, с округлением согласно настройкам контекста.val
- строковое представление a BigDecimal
.mc
- контекст, чтобы использовать.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
.NumberFormatException
- если val
не допустимое представление BigDecimal.public BigDecimal(double val)
double
в a BigDecimal
который является точным десятичным представлением double
's двоичное значение с плавающей точкой. Масштаб возвращенного BigDecimal
самое маленькое значение так, что, (10scale × val) является целым числом. Примечания:
new BigDecimal(0.1)
в Java создает a BigDecimal
который точно равен 0.1 (немасштабируемое значение 1 с масштабом 1), но это фактически равно 0.1000000000000000055511151231257827021181583404541015625. Это - то, потому что 0.1 не может быть представлен точно как a double
(или, в этом отношении, как двоичная дробь любой конечной длины). Таким образом значение, в котором передают конструктору, не точно равно 0.1, появления несмотря на это. String
конструктор, с другой стороны, совершенно предсказуем: запись new BigDecimal("0.1")
создает a BigDecimal
который точно равен 0.1, как можно было бы ожидать. Поэтому, обычно рекомендуется, чтобы конструктор String использовался в предпочтении к этому. double
должен использоваться в качестве источника для a BigDecimal
, отметьте, что этот конструктор обеспечивает точное преобразование; это не дает тот же самый результат как преобразование double
к a String
использование Double.toString(double)
метод и затем использование BigDecimal(String)
конструктор. Чтобы получить тот результат, используйте static
valueOf(double)
метод. val
- double
значение, которое будет преобразовано в BigDecimal
.NumberFormatException
- если val
бесконечно или НЭН.public BigDecimal(double val, MathContext mc)
double
в a BigDecimal
, с округлением согласно настройкам контекста. Масштаб BigDecimal
самое маленькое значение так, что, (10scale × val) является целым числом. Результаты этого конструктора могут быть несколько непредсказуемыми, и его использование обычно не рекомендуется; см. примечания под BigDecimal(double)
конструктор.
val
- double
значение, которое будет преобразовано в BigDecimal
.mc
- контекст, чтобы использовать.ArithmeticException
- если результат неточен, но RoundingMode является НЕНУЖНЫМ.NumberFormatException
- если val
бесконечно или НЭН.public BigDecimal(BigInteger val)
BigInteger
в a BigDecimal
. Масштаб BigDecimal
нуль.val
- BigInteger
значение, которое будет преобразовано в BigDecimal
.public BigDecimal(BigInteger val, MathContext mc)
BigInteger
в a BigDecimal
округление согласно настройкам контекста. Масштаб BigDecimal
нуль.val
- BigInteger
значение, которое будет преобразовано в BigDecimal
.mc
- контекст, чтобы использовать.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
.public BigDecimal(BigInteger unscaledVal, int scale)
BigInteger
немасштабируемое значение и int
масштаб в a BigDecimal
. Значение BigDecimal
(unscaledVal × 10-scale).unscaledVal
- немасштабируемое значение BigDecimal
.scale
- масштаб BigDecimal
.public BigDecimal(BigInteger unscaledVal, int scale, MathContext mc)
BigInteger
немасштабируемое значение и int
масштаб в a BigDecimal
, с округлением согласно настройкам контекста. Значение BigDecimal
(unscaledVal × 10-scale), округленный согласно precision
и округление настроек режима.unscaledVal
- немасштабируемое значение BigDecimal
.scale
- масштаб BigDecimal
.mc
- контекст, чтобы использовать.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
.public BigDecimal(int val)
int
в a BigDecimal
. Масштаб BigDecimal
нуль.val
- int
значение, которое будет преобразовано в BigDecimal
.public BigDecimal(int val, MathContext mc)
int
в a BigDecimal
, с округлением согласно настройкам контекста. Масштаб BigDecimal
, перед любым округлением, нуль.val
- int
значение, которое будет преобразовано в BigDecimal
.mc
- контекст, чтобы использовать.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
.public BigDecimal(long val)
long
в a BigDecimal
. Масштаб BigDecimal
нуль.val
- long
значение, которое будет преобразовано в BigDecimal
.public BigDecimal(long val, MathContext mc)
long
в a BigDecimal
, с округлением согласно настройкам контекста. Масштаб BigDecimal
, перед любым округлением, нуль.val
- long
значение, которое будет преобразовано в BigDecimal
.mc
- контекст, чтобы использовать.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
.public static BigDecimal valueOf(long unscaledVal, int scale)
long
немасштабируемое значение и int
масштаб в a BigDecimal
. Этот "статический метод фабрики" обеспечивается в предпочтении к (long
, int
) конструктор, потому что это учитывает повторное использование часто используемого BigDecimal
значения..unscaledVal
- немасштабируемое значение BigDecimal
.scale
- масштаб BigDecimal
.BigDecimal
чье значением является (unscaledVal × 10-scale).public static BigDecimal valueOf(long val)
long
значение в a BigDecimal
с масштабом нуля. Этот "статический метод фабрики" обеспечивается в предпочтении к (long
) конструктор, потому что это учитывает повторное использование часто используемого BigDecimal
значения.val
- значение BigDecimal
.BigDecimal
чье значение val
.public static BigDecimal valueOf(double val)
double
в a BigDecimal
, использование double
's каноническое строковое представление, обеспеченное Double.toString(double)
метод. Отметьте: Это - обычно привилегированный способ преобразовать a double
(или float
) в a BigDecimal
, поскольку возвращенное значение равно этому следующему из построения a BigDecimal
от результата использования Double.toString(double)
.
val
- double
преобразовать в a BigDecimal
.BigDecimal
чье значение равно или приблизительно равно значению val
.NumberFormatException
- если val
бесконечно или НЭН.public BigDecimal add(BigDecimal augend)
BigDecimal
чье значение (this + augend)
, и чей масштаб max(this.scale(), augend.scale())
.augend
- значение, которое будет добавлено к этому BigDecimal
.this + augend
public BigDecimal add(BigDecimal augend, MathContext mc)
BigDecimal
чье значение (this + augend)
, с округлением согласно настройкам контекста. Если любое число является нулем, и установка точности является ненулевой тогда, другое число, округленное в случае необходимости, используется в качестве результата.augend
- значение, которое будет добавлено к этому BigDecimal
.mc
- контекст, чтобы использовать.this + augend
, округленный по мере необходимости.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
.public BigDecimal subtract(BigDecimal subtrahend)
BigDecimal
чье значение (this - subtrahend)
, и чей масштаб max(this.scale(), subtrahend.scale())
.subtrahend
- значение, которое будет вычтено из этого BigDecimal
.this - subtrahend
public BigDecimal subtract(BigDecimal subtrahend, MathContext mc)
BigDecimal
чье значение (this - subtrahend)
, с округлением согласно настройкам контекста. Если subtrahend
нуль тогда, это, округленное в случае необходимости, используется в качестве результата. Если это - нуль тогда, результат subtrahend.negate(mc)
.subtrahend
- значение, которое будет вычтено из этого BigDecimal
.mc
- контекст, чтобы использовать.this - subtrahend
, округленный по мере необходимости.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
.public BigDecimal multiply(BigDecimal multiplicand)
BigDecimal
чье значением является (this × multiplicand), и чей масштаб (this.scale() + multiplicand.scale())
.multiplicand
- значение, которое будет умножено на это BigDecimal
.this * multiplicand
public BigDecimal multiply(BigDecimal multiplicand, MathContext mc)
BigDecimal
чье значением является (this × multiplicand) с округлением согласно настройкам контекста.multiplicand
- значение, которое будет умножено на это BigDecimal
.mc
- контекст, чтобы использовать.this * multiplicand
, округленный по мере необходимости.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
.public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
BigDecimal
чье значение (this / divisor)
, и чей масштаб как определяется. Если округление должно быть выполнено, чтобы генерировать результат с указанным масштабом, указанный режим округления применяется. Новое divide(BigDecimal, int, RoundingMode)
метод должен использоваться в предпочтении к этому методу наследства.
divisor
- значение то, который это BigDecimal
должен быть разделен.scale
- масштаб BigDecimal
частное, которое будет возвращено.roundingMode
- округление режима, чтобы применяться.this / divisor
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
public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
BigDecimal
чье значение (this / divisor)
, и чей масштаб как определяется. Если округление должно быть выполнено, чтобы генерировать результат с указанным масштабом, указанный режим округления применяется.divisor
- значение то, который это BigDecimal
должен быть разделен.scale
- масштаб BigDecimal
частное, которое будет возвращено.roundingMode
- округление режима, чтобы применяться.this / divisor
ArithmeticException
- если divisor
нуль, roundingMode==RoundingMode.UNNECESSARY
и указанный масштаб недостаточен, чтобы представить результат подразделения точно.public BigDecimal divide(BigDecimal divisor, int roundingMode)
BigDecimal
чье значение (this / divisor)
, и чей масштаб this.scale()
. Если округление должно быть выполнено, чтобы генерировать результат с данным масштабом, указанный режим округления применяется. Новое divide(BigDecimal, RoundingMode)
метод должен использоваться в предпочтении к этому методу наследства.
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()
недостаточно, чтобы представить результат подразделения точно.public BigDecimal divide(BigDecimal divisor)
BigDecimal
чье значение (this / divisor)
, и чей привилегированный масштаб (this.scale() - divisor.scale())
; если точное частное не может быть представлено (потому что у него есть расширение бесконечной десятичной дроби), ArithmeticException
бросается.divisor
- значение то, который это BigDecimal
должен быть разделен.this / divisor
ArithmeticException
- если у точного частного нет завершающегося десятичного расширенияpublic BigDecimal divide(BigDecimal divisor, MathContext mc)
BigDecimal
чье значение (this / divisor)
, с округлением согласно настройкам контекста.divisor
- значение то, который это BigDecimal
должен быть разделен.mc
- контекст, чтобы использовать.this / divisor
, округленный по мере необходимости.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
или mc.precision == 0
и у частного есть расширение бесконечной десятичной дроби.public BigDecimal divideToIntegralValue(BigDecimal divisor)
BigDecimal
чье значение является целой частью частного (this / divisor)
округленный в меньшую сторону. Привилегированный масштаб результата (this.scale() - divisor.scale())
.divisor
- значение то, который это BigDecimal
должен быть разделен.this / divisor
.ArithmeticException
- если divisor==0
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
цифры.public BigDecimal remainder(BigDecimal divisor)
BigDecimal
чье значение (this % divisor)
. Остатком дают this.subtract(this.divideToIntegralValue(divisor).multiply(divisor))
. Отметьте, что это не работа по модулю (результат может быть отрицательным).
divisor
- значение то, который это BigDecimal
должен быть разделен.this % divisor
.ArithmeticException
- если divisor==0
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.divideToIntgralValue(divisor)
потребовал бы точности больше чем mc.precision
цифры.divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)
public BigDecimal[] divideAndRemainder(BigDecimal divisor)
BigDecimal
массив, содержащий результат divideToIntegralValue
сопровождаемый результатом remainder
на этих двух операндах. Отметьте, что, если и целочисленное частное и остаток необходимы, этот метод быстрее чем использование divideToIntegralValue
и remainder
методы отдельно, потому что подразделение должно только быть выполненным однажды.
divisor
- значение то, который это BigDecimal
должен быть разделен, и вычисленный остаток.BigDecimal
массив: частное (результат divideToIntegralValue
) начальный элемент, и остаток является заключительным элементом.ArithmeticException
- если divisor==0
divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)
, remainder(java.math.BigDecimal, java.math.MathContext)
public BigDecimal[] divideAndRemainder(BigDecimal divisor, MathContext mc)
BigDecimal
массив, содержащий результат divideToIntegralValue
сопровождаемый результатом remainder
на этих двух операндах, вычисленных с округлением согласно настройкам контекста. Отметьте, что, если и целочисленное частное и остаток необходимы, этот метод быстрее чем использование divideToIntegralValue
и remainder
методы отдельно, потому что подразделение должно только быть выполненным однажды.
divisor
- значение то, который это BigDecimal
должен быть разделен, и вычисленный остаток.mc
- контекст, чтобы использовать.BigDecimal
массив: частное (результат divideToIntegralValue
) начальный элемент, и остаток является заключительным элементом.ArithmeticException
- если divisor==0
ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
, или mc.precision
> 0 и результат this.divideToIntgralValue(divisor)
потребовал бы точности больше чем mc.precision
цифры.divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)
, remainder(java.math.BigDecimal, java.math.MathContext)
public BigDecimal pow(int n)
BigDecimal
чье значением является (thisn), питание вычисляется точно к неограниченной точности. Параметр n
должен быть в диапазоне 0 через 999999999, включительно. ZERO.pow(0)
возвраты ONE
. Отметьте, что будущие выпуски могут развернуть допустимый диапазон экспоненты этого метода.
n
- питание повысить это BigDecimal
к.ArithmeticException
- если n
испытывает недостаток диапазона.public BigDecimal pow(int n, MathContext mc)
BigDecimal
чье значением является (thisn). Текущая реализация использует базовый алгоритм, определенный в стандарте ANSI X3.274-1996 с округлением согласно настройкам контекста. Вообще, возвращенное численное значение в пределах двух ulps точного численного значения для выбранной точности. Отметьте, что будущие выпуски могут использовать различный алгоритм с уменьшенной допустимой связанной ошибкой и увеличили допустимый диапазон экспоненты. Алгоритм 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
- контекст, чтобы использовать.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
, или n
испытывает недостаток диапазона.public BigDecimal abs()
BigDecimal
чье значение является абсолютным значением этого BigDecimal
, и чей масштаб this.scale()
.abs(this)
public BigDecimal abs(MathContext mc)
BigDecimal
чье значение является абсолютным значением этого BigDecimal
, с округлением согласно настройкам контекста.mc
- контекст, чтобы использовать.abs(this)
, округленный по мере необходимости.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
.public BigDecimal negate()
BigDecimal
чье значение (-this)
, и чей масштаб this.scale()
.-this
.public BigDecimal negate(MathContext mc)
BigDecimal
чье значение (-this)
, с округлением согласно настройкам контекста.mc
- контекст, чтобы использовать.-this
, округленный по мере необходимости.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
.public BigDecimal plus()
BigDecimal
чье значение (+this)
, и чей масштаб this.scale()
. Этот метод, который просто возвращает это BigDecimal
включается для симметрии с унарным минус метод negate()
.
this
.negate()
public BigDecimal plus(MathContext mc)
BigDecimal
чье значение (+this)
, с округлением согласно настройкам контекста. Эффект этого метода идентичен тому из round(MathContext)
метод.
mc
- контекст, чтобы использовать.this
, округленный по мере необходимости. У нулевого результата будет масштаб 0.ArithmeticException
- если результат неточен, но округляющийся режим UNNECESSARY
.round(MathContext)
public int signum()
BigDecimal
.BigDecimal
отрицательно, нуль, или положителен.public int scale()
BigDecimal
. Если нуль или положительный, масштаб является числом цифр направо от десятичной точки. Если отрицание, немасштабируемое значение числа умножается на десять к питанию отрицания масштаба. Например, масштаб -3
означает, что немасштабируемое значение умножается на 1000.BigDecimal
.public int precision()
BigDecimal
. (Точность является числом цифр в немасштабируемом значении.) Точность нулевого значения 1.
BigDecimal
.public BigInteger unscaledValue()
BigInteger
чье значение является немасштабируемым значением этого BigDecimal
. (Вычисляет (this * 10this.scale()).)BigDecimal
.public BigDecimal round(MathContext mc)
BigDecimal
округленный согласно MathContext
настройки. Если установка точности не является 0 тогда никакими округлениями, имеет место. Эффект этого метода идентичен тому из plus(MathContext)
метод.
mc
- контекст, чтобы использовать.BigDecimal
округленный согласно MathContext
настройки.ArithmeticException
- если округляющийся режим UNNECESSARY
и BigDecimal
работа потребовала бы округления.plus(MathContext)
public BigDecimal setScale(int newScale, RoundingMode roundingMode)
BigDecimal
чей масштаб является указанным значением, и чье немасштабируемое значение определяется, умножаясь или деля это BigDecimal
's немасштабируемое значение соответствующим питанием десять, чтобы поддержать его полное значение. Если масштаб уменьшается работой, немасштабируемое значение должно быть разделено (а не умножено), и значение может быть изменено; в этом случае указанный режим округления применяется к подразделению. Отметьте, что, так как объекты BigDecimal являются неизменными, вызовы этого метода не приводят к исходному изменяемому объекту, вопреки обычному соглашению именования методов, setX видоизменяет поле X
. Вместо этого setScale
возвращает объект с надлежащим масштабом; возвращенный объект может или не может быть недавно выделен.
newScale
- масштаб BigDecimal
значение, которое будет возвращено.roundingMode
- Округляющийся режим, чтобы применяться.BigDecimal
чей масштаб является указанным значением, и чье немасштабируемое значение определяется, умножаясь или деля это BigDecimal
's немасштабируемое значение соответствующим питанием десять, чтобы поддержать его полное значение.ArithmeticException
- если roundingMode==UNNECESSARY
и указанная операция масштабирования потребовала бы округления.RoundingMode
public BigDecimal setScale(int newScale, int roundingMode)
BigDecimal
чей масштаб является указанным значением, и чье немасштабируемое значение определяется, умножаясь или деля это BigDecimal
's немасштабируемое значение соответствующим питанием десять, чтобы поддержать его полное значение. Если масштаб уменьшается работой, немасштабируемое значение должно быть разделено (а не умножено), и значение может быть изменено; в этом случае указанный режим округления применяется к подразделению. Отметьте, что, так как объекты BigDecimal являются неизменными, вызовы этого метода не приводят к исходному изменяемому объекту, вопреки обычному соглашению именования методов, setX видоизменяет поле X
. Вместо этого setScale
возвращает объект с надлежащим масштабом; возвращенный объект может или не может быть недавно выделен.
Новое setScale(int, RoundingMode)
метод должен использоваться в предпочтении к этому методу наследства.
newScale
- масштаб BigDecimal
значение, которое будет возвращено.roundingMode
- Округляющийся режим, чтобы применяться.BigDecimal
чей масштаб является указанным значением, и чье немасштабируемое значение определяется, умножаясь или деля это BigDecimal
's немасштабируемое значение соответствующим питанием десять, чтобы поддержать его полное значение.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
public BigDecimal setScale(int newScale)
BigDecimal
чей масштаб является указанным значением, и чье значение в цифровой форме равно этому BigDecimal
's. Броски ArithmeticException
если это не возможно. Этот вызов обычно используется, чтобы увеличить масштаб, когда гарантируется, что там существует a BigDecimal
из указанного масштаба и корректного значения. Вызов может также использоваться, чтобы уменьшить масштаб, если вызывающая сторона знает что BigDecimal
имеет достаточно много нулей в конце его дробной части (то есть, факторы десять в его целочисленном значении), чтобы учесть перемасштабирование, не изменяя его значение.
Этот метод возвращает тот же самый результат как версии с двумя параметрами setScale
, но избавляет вызывающую сторону от необходимости определить округляющийся режим в случаях, где это не важно.
Отметьте это с тех пор BigDecimal
объекты являются неизменными, вызовы этого метода не приводят к исходному изменяемому объекту, вопреки обычному соглашению именования методов, setX видоизменяет поле X
. Вместо этого setScale
возвращает объект с надлежащим масштабом; возвращенный объект может или не может быть недавно выделен.
newScale
- масштаб BigDecimal
значение, которое будет возвращено.BigDecimal
чей масштаб является указанным значением, и чье немасштабируемое значение определяется, умножаясь или деля это BigDecimal
's немасштабируемое значение соответствующим питанием десять, чтобы поддержать его полное значение.ArithmeticException
- если указанная операция масштабирования потребовала бы округления.setScale(int, int)
, setScale(int, RoundingMode)
public BigDecimal movePointLeft(int n)
BigDecimal
который эквивалентен этому с перемещенной десятичной точкой n
места налево. Если n
является неотрицательным, вызов просто добавляет n
к масштабу. Если n
отрицательно, вызов эквивалентен movePointRight(-n)
. BigDecimal
возвращенный этим вызовом имеет значение (this × 10-n) и масштаб max(this.scale()+n, 0)
.n
- число мест, чтобы переместить десятичную точку налево.BigDecimal
который эквивалентен этому с перемещенной десятичной точкой n
места налево.ArithmeticException
- если масштаб переполняется.public BigDecimal movePointRight(int n)
BigDecimal
который эквивалентен этому с перемещенной десятичной точкой n
места направо. Если n
является неотрицательным, вызов просто вычитает n
от масштаба. Если n
отрицательно, вызов эквивалентен movePointLeft(-n)
. BigDecimal
возвращенный этим вызовом имеет значение (this × 10n) и масштаб max(this.scale()-n, 0)
.n
- число мест, чтобы переместить десятичную точку направо.BigDecimal
который эквивалентен этому с перемещенной десятичной точкой n
места направо.ArithmeticException
- если масштаб переполняется.public BigDecimal scaleByPowerOfTen(int n)
this
* 10n). Масштаб результата (this.scale() - n)
.ArithmeticException
- если масштаб был бы вне диапазона 32-разрядного целого числа.public BigDecimal stripTrailingZeros()
BigDecimal
который в цифровой форме равен этому, но с любыми конечными нулями, удаленными из представления. Например, разделяя конечные нули от BigDecimal
значение 600.0
, который имеет [BigInteger
, scale
] компоненты равняются [6000, 1], урожаи 6E2
с [BigInteger
, scale
] компоненты равняются [6,-2]BigDecimal
с любыми удаленными конечными нулями.public int compareTo(BigDecimal val)
BigDecimal
с указанным BigDecimal
. Два BigDecimal
объекты, которые являются равной стоимости, но имеют различный масштаб (как 2.0 и 2.00) считает равными этот метод. Этот метод обеспечивается в предпочтении к отдельным методам для каждого из шести булевых операторов сравнения (<, ==,>,> =! =, <=). Предложенная идиома для того, чтобы выполнить эти сравнения: (x.compareTo(y)
<op> 0)
, где <op> является одним из этих шести операторов сравнения.compareTo
в интерфейсе Comparable<BigDecimal>
val
- BigDecimal
к которому это BigDecimal
должен быть сравнен.BigDecimal
в цифровой форме меньше чем, равный, или больше чем val
.public boolean equals(Object x)
BigDecimal
с указанным Object
для равенства. В отличие от этого compareTo
, этот метод рассматривает два BigDecimal
объекты, равные, только если они равной стоимости и масштаб (таким образом 2.0 не равно 2.00 когда сравнено этим методом).equals
в class Object
x
- Object
к которому это BigDecimal
должен быть сравнен.true
если и только если указанное Object
a BigDecimal
чье значение и масштаб равны этому BigDecimal
's.compareTo(java.math.BigDecimal)
, hashCode()
public BigDecimal min(BigDecimal val)
BigDecimal
и val
.val
- значение, с которым должен быть вычислен минимум.BigDecimal
чье значение является меньшим из этого BigDecimal
и val
. Если они равны, как определено compareTo
метод, this
возвращается.compareTo(java.math.BigDecimal)
public BigDecimal max(BigDecimal val)
BigDecimal
и val
.val
- значение, с которым должен быть вычислен максимум.BigDecimal
чье значение является большим из этого BigDecimal
и val
. Если они равны, как определено compareTo
метод, this
возвращается.compareTo(java.math.BigDecimal)
public int hashCode()
BigDecimal
. Отметьте это два BigDecimal
у объектов, которые в цифровой форме равны, но отличаются по своим масштабам (как 2.0 и 2.00) обычно не будет того же самого хэш-кода.hashCode
в class Object
BigDecimal
.equals(Object)
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"Примечания:
BigDecimal
значения и результат этого преобразования. Таким образом, каждое различимое BigDecimal
у значения (немасштабируемое значение и масштаб) есть уникальное строковое представление в результате использования toString
. Если то строковое представление преобразовывается назад в a BigDecimal
использование BigDecimal(String)
конструктор, тогда исходное значение будет восстановлено. NumberFormat
class и его подклассы. toEngineeringString()
метод может использоваться для того, чтобы подарить числам экспоненты в технической нотации, и setScale
метод может использоваться для того, чтобы округлить a BigDecimal
таким образом, у этого есть известное число цифр после десятичной точки. Character.forDigit
используется. toString
в class Object
BigDecimal
.Character.forDigit(int, int)
, BigDecimal(java.lang.String)
public String toEngineeringString()
BigDecimal
, использование технической нотации, если экспонента необходима. Возвращает строку, которая представляет BigDecimal
как описано в toString()
метод, за исключением того, что, если экспоненциальная нотация используется, питание десять корректируется, чтобы быть кратным числом три (техническая нотация) так, что целая часть ненулевых значений, будет в диапазоне 1 - 999. Если экспоненциальная нотация используется для нулевых значений, десятичная точка и одна или две дробных нулевых цифры используются так, чтобы масштаб нулевого значения был сохранен. Отметьте это в отличие от вывода toString()
, вывод этого метода, как гарантируют, не восстановит то же самое [целое число, масштаб] пара этого BigDecimal
если выходная строка преобразовывает назад в a BigDecimal
использование строкового конструктора. Результат этого метода встречает более слабое ограничение всегда создания в цифровой форме равного следствия применения строкового конструктора к выводу метода.
BigDecimal
, использование технической нотации, если экспонента необходима.public String toPlainString()
BigDecimal
без поля экспоненты. Для значений с положительным масштабом число цифр направо от десятичной точки используется, чтобы указать на масштаб. Для значений с нулевым или отрицательным масштабом сгенерирована получающаяся строка, как будто значение было преобразовано в в цифровой форме равное значение с нулевым масштабом и как будто все конечные нули нулевого значения масштаба присутствовали в результате. Вся строка снабжается префиксом символом знака "минус" '-' ('\u002D'), если немасштабируемое значение является меньше чем нуль. Никакой символ знака не снабжается префиксом, если немасштабируемое значение является нулем или положительный. Отметьте это, если результат этого метода передают строковому конструктору, только численное значение этого BigDecimal
будет обязательно восстановлен; представление нового BigDecimal
может иметь различный масштаб. В частности если это BigDecimal
имеет отрицательный масштаб, у строки, следующей из этого метода, будет масштаб нуля когда обработано строковым конструктором. (Этот метод ведет себя аналогично к toString
метод в 1.4 и более ранние выпуски.)BigDecimal
без поля экспоненты.toString()
, toEngineeringString()
public BigInteger toBigInteger()
BigDecimal
к a BigInteger
. Это преобразование походит на сужающееся примитивное преобразование из double
к long
как определено в разделе 5.1.3 из Спецификации языка Java™: любая дробная часть этого BigDecimal
будет отброшен. Отметьте, что это преобразование может потерять информацию о точности BigDecimal
значение. Чтобы бросить исключение, если преобразование неточно (другими словами, если ненулевая дробная часть отбрасывается), используйте toBigIntegerExact()
метод.
BigDecimal
преобразованный в a BigInteger
.public BigInteger toBigIntegerExact()
BigDecimal
к a BigInteger
, проверка потерянную информацию. Исключение выдается если это BigDecimal
имеет ненулевую дробную часть.BigDecimal
преобразованный в a BigInteger
.ArithmeticException
- если this
имеет ненулевую дробную часть.public long longValue()
BigDecimal
к a long
. Это преобразование походит на сужающееся примитивное преобразование из double
к short
как определено в разделе 5.1.3 из Спецификации языка Java™: любая дробная часть этого BigDecimal
будет отброшен, и если получающееся"BigInteger
"является слишком большим, чтобы поместиться в a long
, только младший разряд 64 бита возвращается. Отметьте, что это преобразование может потерять информацию о полной величине и точности этого BigDecimal
оцените так же как возвратите результат с противоположным знаком.public long longValueExact()
BigDecimal
к a long
, проверка потерянную информацию. Если это BigDecimal
имеет ненулевую дробную часть или испытывает недостаток возможного диапазона для a long
закончитесь тогда ArithmeticException
бросается.BigDecimal
преобразованный в a long
.ArithmeticException
- если this
имеет ненулевую дробную часть, или не будет помещаться в a long
.public int intValue()
BigDecimal
к int
. Это преобразование походит на сужающееся примитивное преобразование из double
к short
как определено в разделе 5.1.3 из Спецификации языка Java™: любая дробная часть этого BigDecimal
будет отброшен, и если получающееся"BigInteger
"является слишком большим, чтобы вписаться int
, только младший разряд 32 бита возвращается. Отметьте, что это преобразование может потерять информацию о полной величине и точности этого BigDecimal
оцените так же как возвратите результат с противоположным знаком.public int intValueExact()
BigDecimal
к int
, проверка потерянную информацию. Если это BigDecimal
имеет ненулевую дробную часть или испытывает недостаток возможного диапазона для int
закончитесь тогда ArithmeticException
бросается.BigDecimal
преобразованный в int
.ArithmeticException
- если this
имеет ненулевую дробную часть, или не будет вписываться int
.public short shortValueExact()
BigDecimal
к a short
, проверка потерянную информацию. Если это BigDecimal
имеет ненулевую дробную часть или испытывает недостаток возможного диапазона для a short
закончитесь тогда ArithmeticException
бросается.BigDecimal
преобразованный в a short
.ArithmeticException
- если this
имеет ненулевую дробную часть, или не будет помещаться в a short
.public byte byteValueExact()
BigDecimal
к a byte
, проверка потерянную информацию. Если это BigDecimal
имеет ненулевую дробную часть или испытывает недостаток возможного диапазона для a byte
закончитесь тогда ArithmeticException
бросается.BigDecimal
преобразованный в a byte
.ArithmeticException
- если this
имеет ненулевую дробную часть, или не будет помещаться в a byte
.public float floatValue()
BigDecimal
к a float
. Это преобразование подобно сужающемуся примитивному преобразованию из double
к float
как определено в разделе 5.1.3 из Спецификации языка Java™: если это BigDecimal
имеет слишком большую величину, чтобы представить как a float
, это будет преобразовано в Float.NEGATIVE_INFINITY
или Float.POSITIVE_INFINITY
как соответствующий. Отметьте, что, даже когда возвращаемое значение конечно, это преобразование может потерять информацию о точности BigDecimal
значение.floatValue
в class Number
BigDecimal
преобразованный в a float
.public double doubleValue()
BigDecimal
к a double
. Это преобразование подобно сужающемуся примитивному преобразованию из double
к float
как определено в разделе 5.1.3 из Спецификации языка Java™: если это BigDecimal
имеет слишком большую величину, представляют как a double
, это будет преобразовано в Double.NEGATIVE_INFINITY
или Double.POSITIVE_INFINITY
как соответствующий. Отметьте, что, даже когда возвращаемое значение конечно, это преобразование может потерять информацию о точности BigDecimal
значение.doubleValue
в class Number
BigDecimal
преобразованный в a double
.public BigDecimal ulp()
BigDecimal
. ulp ненулевого BigDecimal
значение является положительным расстоянием между этим значением и BigDecimal
оцените затем больше в величине с тем же самым числом цифр. ulp нулевого значения в цифровой форме равен 1 с масштабом this
. Результат сохранен тем же самым масштабом как this
таким образом, результат для нулевых и ненулевых значений равен [1, this.scale()]
.this
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92