BigDecimal Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Неизменяемые, произвольные десятичные числа со знаком произвольной точности.
[Android.Runtime.Register("java/math/BigDecimal", DoNotGenerateAcw=true)]
public class BigDecimal : Java.Lang.Number, IDisposable, Java.Interop.IJavaPeerable, Java.Lang.IComparable
[<Android.Runtime.Register("java/math/BigDecimal", DoNotGenerateAcw=true)>]
type BigDecimal = class
inherit Number
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IComparable
- Наследование
- Атрибуты
- Реализации
Комментарии
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. A BigDecimal
состоит из произвольного целого числа #unscaledValue() немасштабированного значения и 32-разрядного целого числа #scale(). Если значение равно нулю или положительно, масштаб — это число цифр справа от десятичной запятой. Если отрицательный, немасштабированное значение числа умножается на десять на силу отрицания шкалы. Таким образом, значение числа, представленного таким BigDecimal
образом (unscaledValue × 10<sup>-scale</sup>)
.
Класс BigDecimal
предоставляет операции для арифметического, масштабирования, округления, сравнения, хэширования и преобразования формата. Метод #toString
предоставляет каноническое представление объекта BigDecimal
.
Класс BigDecimal
предоставляет пользователю полный контроль над цикливным поведением. Если режим округления не указан и точный результат не может быть представлен, создается исключение; ArithmeticException
в противном случае вычисления можно выполнить в выбранном режиме точности и округления путем предоставления соответствующего MathContext
объекта операции. В любом случае для управления округлением предоставляются восемь <>режимов< округления или em>. Использование целых полей в этом классе (например #ROUND_HALF_UP
, для представления режима округления) не рекомендуется; вместо этого следует использовать значения RoundingMode
enum
перечисления (например RoundingMode#HALF_UP
, ).
MathContext
Если объект поставляется с параметром точности 0 (например, MathContext#UNLIMITED
), арифметические операции точны, как и арифметические методы, которые не MathContext
принимают никакого объекта. В качестве совместного вычисления точного результата, параметр MathContext
режима округления объекта с точностью 0 не используется и поэтому не имеет значения. В случае деления точный кворот может иметь бесконечно длинное десятичное расширение; например, 1 разделено на 3. Если кворот имеет нетерминируемое десятичное расширение, а операция указана для возврата точного результата, ArithmeticException
создается исключение. В противном случае возвращается точный результат деления, как и для других операций.
Если параметр точности не равен 0, правила BigDecimal
арифметики широко совместимы с выбранными режимами работы арифметического определения в ANSI X3.274-1996 и ANSI X3.274-1996/AM 1-2000 (раздел 7.4). В отличие от этих стандартов, BigDecimal
включает в себя множество режимов округления. Все конфликты между этими стандартами ANSI и BigDecimal
спецификацией разрешаются в пользу BigDecimal
.
Так как одно и то же числовое значение может иметь разные представления (с разными шкалами), правила арифметики и округления должны указывать как числовый результат, так и масштаб, используемый в представлении результата.
Различные представления одного и того же числового значения называются элементами одного и того же когорты. Естественный порядок BigDecimal
#compareTo(BigDecimal) считает членов одной и той же когорты равными друг другу. В отличие от этого, #equals(Object) equals
метод требует, чтобы числовое значение и представление были одинаковыми для равенства. Результаты таких методов, как #scale()
и #unscaledValue()
будут отличаться для числовых равных значений с разными представлениями.
Как правило, режимы округления и параметры точности определяют, как операции возвращают результаты с ограниченным числом цифр, когда точный результат имеет больше цифр (возможно, бесконечно много в случае деления и квадратного корня), чем число возвращаемых цифр.
Во-первых, общее количество возвращаемых цифр определяется MathContext
параметром параметраprecision
. Это определяет точность результата. Число цифр начинается с самой левой ненулевой цифры точного результата. Режим округления определяет, как любые отброшенные конечные цифры влияют на возвращаемый результат.
Для всех арифметических операторов операция выполняется так, как будто точный промежуточный результат сначала вычисляется, а затем округляется до числа цифр, указанных параметром точности (при необходимости), с помощью выбранного режима округления. Если точный результат не возвращается, некоторые позиции цифр точного результата удаляются. При округление увеличивает величину возвращаемого результата, можно создать новую позицию цифры, распространяющуюся на ведущую цифру "9". Например, округление значения 999,9 до трех цифр округление будет числовым числом равно одной тысяче, представленной как 100>; 10<sup>1</sup>. В таких случаях новое значение "1" является начальной позицией возвращаемого результата.
Для методов и конструкторов с параметром MathContext
, если результат неактуален, но режим округления имеет RoundingMode#UNNECESSARY UNNECESSARY
значение, ArithmeticException
будет создано исключение.
Помимо логического точного результата, каждая арифметическая операция имеет предпочтительный масштаб для представления результата. Предпочтительный масштаб для каждой операции указан в таблице ниже.
<table class="striped" style="text-align:left"><caption Preferred Scales for Results of Arithmetic Operations </caption>><thead><tr><th scope="col">Operation</th><th scope="col"col">Preferred Scale of Result</th></tr/thead><tbody<>tr>><< th scope="row">Add</><th td>max(addend.scale(), augend.scale()/<td<>tr th><scope="row">Subtract</th><td max(minuend.scale(), subtrahend.scale()</td><>tr><th scope="row">Умножение</th><td>умножение.scale() + multiplicand.scale()</td<>tr th><scope="row">Divide</th td dividend.scale() - divisor.scale()/td><tr><th scope="row">Square root</th><><td>radicand.scale()</2</td/td><>/table><>
Эти шкалы используются методами, возвращающими точные арифметические результаты; за исключением того, что точный раздел может потребоваться использовать больший масштаб, так как точный результат может иметь больше цифр. Например, адресу 1/32
соответствует значение 0.03125
.
Перед округлением масштаб логического точного промежуточного результата является предпочтительным масштабом для этой операции. Если точный числовый результат не может быть представлен в precision
цифрах, округление выбирает набор цифр для возврата, а масштаб результата уменьшается с масштаба промежуточного результата до наименьшего масштаба, который может представлять precision
цифры, которые фактически возвращаются. Если точный результат может быть представлен с максимальной precision
цифрой, возвращается представление результата с ближайшим к предпочтительному масштабу. В частности, точно представляемый кворот может быть представлен меньше precision
цифр, удаляя конечные нули и уменьшая масштаб. Например, округление до трех цифр с помощью режима округления пола RoundingMode#FLOOR, <br>
19/100 = 0.19 // integer=19, scale=2
<br>
но<br>
21/110 = 0.190 // integer=190, scale=3
<br>
Обратите внимание, что для добавления, вычитания и умножения уменьшение масштаба равно количеству позиций цифр точного результата, которые удаляются. Если округление приводит к распространению переноски для создания новой позиции цифры с высоким порядком, дополнительная цифра результата удаляется, чем при отсутствии новой позиции цифры.
Другие методы могут немного отличаться семантикой округления. Например, результат метода с помощью указанного pow
алгоритма #pow(int, MathContext) может иногда отличаться от округленного математического результата на несколько единиц в последнем месте, один #ulp() ulp.
Два типа операций предоставляются для управления масштабом BigDecimal
операций масштабирования и округления и десятичных операций движения запятой. Операции масштабирования или округления (#setScale setScale
и #round round
) возвращают BigDecimal
значение, значение которого приблизительно (или точно) равно операнду, но масштаб или точность которого является указанным значением; то есть увеличивает или уменьшает точность хранимого числа с минимальным эффектом на его значение. Операции перемещения десятичной запятой BigDecimal
(#movePointLeft movePointLeft
и#movePointRight movePointRight
) возвращают созданный из операнда, перемещая десятичную точку на указанное расстояние в указанном направлении.
Как 32-разрядное целое число, набор значений для масштабирования велик, но привязан. Если масштаб результата превысит диапазон 32-разрядного целого числа, либо по переполнению, либо по переполнению, операция может вызвать исключение ArithmeticException
.
Для краткости и ясности псевдокод используется во всех описаниях BigDecimal
методов. Псевдокодовое выражение (i + j)
является коротким для " BigDecimal
значение, значение которого является BigDecimal
i
добавленным в BigDecimal
j
это выражение ". Выражение (i == j)
псевдокода сокращено для "true
, если и только еслиi
BigDecimal
представляет то же значение, что BigDecimal
j
и ". Другие псевдокодовые выражения интерпретируются аналогичным образом. Квадратные скобки используются для представления конкретной BigInteger
пары масштабирования, определяющей BigDecimal
значение. Например, [19, 2] числовое BigDecimal
значение равно 0,19 с масштабом 2.
Все методы и конструкторы для этого класса создаются NullPointerException
при передаче null
ссылки на объект для любого входного параметра.
Добавлено в версии 1.1.
Документация по Java для java.math.BigDecimal
.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Конструкторы
BigDecimal(BigInteger) |
Преобразуется |
BigDecimal(BigInteger, Int32) |
Преобразует немасштабированное |
BigDecimal(BigInteger, Int32, MathContext) |
Преобразует немасштабированное |
BigDecimal(BigInteger, MathContext) |
Преобразуется |
BigDecimal(Char[]) |
Преобразует представление |
BigDecimal(Char[], Int32, Int32) |
Преобразует представление |
BigDecimal(Char[], Int32, Int32, MathContext) |
Преобразует представление |
BigDecimal(Char[], MathContext) |
Преобразует представление |
BigDecimal(Double) |
Преобразуется |
BigDecimal(Double, MathContext) |
Преобразуется |
BigDecimal(Int32) |
Преобразуется |
BigDecimal(Int32, MathContext) |
Преобразует объект в |
BigDecimal(Int64) |
Преобразуется |
BigDecimal(Int64, MathContext) |
Преобразуется |
BigDecimal(IntPtr, JniHandleOwnership) |
Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения. |
BigDecimal(String) |
Преобразует строковое представление объекта |
BigDecimal(String, MathContext) |
Преобразует строковое представление a в |
Поля
RoundCeiling |
Циклический режим округления в направлении положительной бесконечности. |
RoundDown |
Округление режима округления к нулю. |
RoundFloor |
Циклический режим округления к отрицательной бесконечности. |
RoundHalfDown |
Циклический режим округления к "ближайшему соседу", если оба соседа не эквивалентны, в этом случае округление вниз. |
RoundHalfEven |
Циклический режим округления к "ближайшему соседу", если оба соседа не эквивалентны, в этом случае округляются к даже соседу. |
RoundHalfUp |
Циклический режим округления к "ближайшему соседу", если оба соседа не эквивалентны, в этом случае округляется. |
RoundUnnecessary |
Режим округления для утверждения о том, что запрошенная операция имеет точный результат, поэтому округление не требуется. |
RoundUp |
Режим округления до нуля. |
Свойства
Class |
Возвращает класс среды выполнения этого |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
JniIdentityHashCode |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от Object) |
JniPeerMembers |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. |
One |
Значение 1 с масштабом 0. |
PeerReference |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от Object) |
Ten |
Значение 10 с масштабом 0. |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
Zero |
Значение 0 с масштабом 0. |
Методы
Abs() |
|
Abs(MathContext) |
|
Add(BigDecimal) |
|
Add(BigDecimal, MathContext) |
|
ByteValue() |
Возвращает значение указанного числа в виде |
ByteValueExact() |
Преобразует это |
Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от Object) |
CompareTo(BigDecimal) |
Сравнивает это |
Dispose() |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от Object) |
Dispose(Boolean) |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от Object) |
Divide(BigDecimal) |
|
Divide(BigDecimal, Int32, RoundingMode) |
|
Divide(BigDecimal, Int32, RoundOptions) |
|
Divide(BigDecimal, MathContext) |
|
Divide(BigDecimal, RoundingMode) |
|
Divide(BigDecimal, RoundOptions) |
|
DivideAndRemainder(BigDecimal) |
Возвращает массив двух элементов |
DivideAndRemainder(BigDecimal, MathContext) |
Возвращает массив двух элементов |
DivideToIntegralValue(BigDecimal) |
|
DivideToIntegralValue(BigDecimal, MathContext) |
|
DoubleValue() |
Преобразует этот объект |
Equals(Object) |
Указывает, равен ли другой объект этому объекту. (Унаследовано от Object) |
FloatValue() |
Преобразует этот объект |
GetHashCode() |
Возвращает значение хэш-кода для объекта. (Унаследовано от Object) |
IntValue() |
Преобразует это |
IntValueExact() |
Преобразует это |
JavaFinalize() |
Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет. (Унаследовано от Object) |
LongValue() |
Преобразует этот объект |
LongValueExact() |
Преобразует это |
Max(BigDecimal) |
Возвращает максимальное значение этого |
Min(BigDecimal) |
Возвращает минимальное значение этого |
MovePointLeft(Int32) |
|
MovePointRight(Int32) |
|
Multiply(BigDecimal) |
|
Multiply(BigDecimal, MathContext) |
|
Negate() |
|
Negate(MathContext) |
|
Notify() |
Пробуждение одного потока, ожидающего монитора этого объекта. (Унаследовано от Object) |
NotifyAll() |
Просыпает все потоки, ожидающие монитора этого объекта. (Унаследовано от Object) |
Plus() |
|
Plus(MathContext) |
|
Pow(Int32) |
|
Pow(Int32, MathContext) |
|
Precision() |
Возвращает точность этого |
Remainder(BigDecimal) |
|
Remainder(BigDecimal, MathContext) |
|
Round(MathContext) |
Возвращает округленное округление |
Scale() |
Возвращает масштаб этого |
ScaleByPowerOfTen(Int32) |
Возвращает BigDecimal, числовое значение которого равно ( |
SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
SetScale(Int32) |
|
SetScale(Int32, RoundingMode) |
|
SetScale(Int32, RoundOptions) |
|
ShortValue() |
Возвращает значение указанного числа в виде |
ShortValueExact() |
Преобразует это |
Signum() |
Возвращает функцию знака этой |
Sqrt(MathContext) |
Возвращает приближение к квадрату корня |
StripTrailingZeros() |
|
Subtract(BigDecimal) |
|
Subtract(BigDecimal, MathContext) |
|
ToArray<T>() |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от Object) |
ToBigInteger() |
Преобразует этот объект |
ToBigIntegerExact() |
Преобразует это |
ToEngineeringString() |
Возвращает строковое представление этого |
ToPlainString() |
Возвращает строковое представление этого |
ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
Ulp() |
Возвращает размер ulp, единицу в последнем месте. |
UnregisterFromRuntime() |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от Object) |
UnscaledValue() |
|
ValueOf(Double) |
Преобразует его |
ValueOf(Int64) |
Преобразует |
ValueOf(Int64, Int32) |
Преобразует немасштабированное |
Wait() |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>помощи уведомления</em> или <эм>прерванного</em>. (Унаследовано от Object) |
Wait(Int64) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
Wait(Int64, Int32) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
IComparable.CompareTo(Object) |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. |
IJavaPeerable.Disposed() |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от Object) |
IJavaPeerable.Finalized() |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от Object) |
IJavaPeerable.JniManagedPeerState |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от Object) |
Методы расширения
JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
JavaCast<TResult>(IJavaObject) |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. |
GetJniTypeName(IJavaPeerable) |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. |