|
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, shortValuepublic 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:
eE
- 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 + augendpublic 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 - subtrahendpublic 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 * multiplicandpublic 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 / divisorArithmeticException - если divisor нуль, roundingMode==ROUND_UNNECESSARY и указанный масштаб недостаточен, чтобы представить результат подразделения точно.IllegalArgumentException - если roundingMode не представляет допустимый режим округления.ROUND_UP, ROUND_DOWN, ROUND_CEILING, ROUND_FLOOR, ROUND_HALF_UP, ROUND_HALF_DOWN, ROUND_HALF_EVEN, ROUND_UNNECESSARYpublic BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
BigDecimal чье значение (this / divisor), и чей масштаб как определяется. Если округление должно быть выполнено, чтобы генерировать результат с указанным масштабом, указанный режим округления применяется.divisor - значение то, который это BigDecimal должен быть разделен.scale - масштаб BigDecimal частное, которое будет возвращено.roundingMode - округление режима, чтобы применяться.this / divisorArithmeticException - если divisor нуль, roundingMode==RoundingMode.UNNECESSARY и указанный масштаб недостаточен, чтобы представить результат подразделения точно.public BigDecimal divide(BigDecimal divisor, int roundingMode)
BigDecimal чье значение (this / divisor), и чей масштаб this.scale(). Если округление должно быть выполнено, чтобы генерировать результат с данным масштабом, указанный режим округления применяется. Новое divide(BigDecimal, RoundingMode) метод должен использоваться в предпочтении к этому методу наследства.
divisor - значение то, который это BigDecimal должен быть разделен.roundingMode - округление режима, чтобы применяться.this / divisorArithmeticException - если 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_UNNECESSARYpublic BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode)
BigDecimal чье значение (this / divisor), и чей масштаб this.scale(). Если округление должно быть выполнено, чтобы генерировать результат с данным масштабом, указанный режим округления применяется.divisor - значение то, который это BigDecimal должен быть разделен.roundingMode - округление режима, чтобы применяться.this / divisorArithmeticException - если divisor==0, или roundingMode==RoundingMode.UNNECESSARY и this.scale() недостаточно, чтобы представить результат подразделения точно.public BigDecimal divide(BigDecimal divisor)
BigDecimal чье значение (this / divisor), и чей привилегированный масштаб (this.scale() - divisor.scale()); если точное частное не может быть представлено (потому что у него есть расширение бесконечной десятичной дроби), ArithmeticException бросается.divisor - значение то, который это BigDecimal должен быть разделен.this / divisorArithmeticException - если у точного частного нет завершающегося десятичного расширения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==0public BigDecimal divideToIntegralValue(BigDecimal divisor, MathContext mc)
BigDecimal чье значение является целой частью (this / divisor). Так как целая часть точного частного не зависит от округляющегося режима, округляющийся режим не влияет на значения, возвращенные этим методом. Привилегированный масштаб результата (this.scale() - divisor.scale()). ArithmeticException бросается, если целая часть точного частного нуждается в больше чем mc.precision цифры.divisor - значение то, который это BigDecimal должен быть разделен.mc - контекст, чтобы использовать.this / divisor.ArithmeticException - если divisor==0ArithmeticException - если 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==0public 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==0ArithmeticException - если результат неточен, но округляющийся режим 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==0divideToIntegralValue(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==0ArithmeticException - если результат неточен, но округляющийся режим 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 и указанная операция масштабирования потребовала бы округления.RoundingModepublic 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_UNNECESSARYpublic 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 Objectx - 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 ObjectBigDecimal.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 ObjectBigDecimal.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 NumberBigDecimal преобразованный в 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 NumberBigDecimal преобразованный в a double.public BigDecimal ulp()
BigDecimal. ulp ненулевого BigDecimal значение является положительным расстоянием между этим значением и BigDecimal оцените затем больше в величине с тем же самым числом цифр. ulp нулевого значения в цифровой форме равен 1 с масштабом this. Результат сохранен тем же самым масштабом как this таким образом, результат для нулевых и ненулевых значений равен [1, this.scale()].this
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92