BigDecimal Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Неизменяемые, произвольные десятичные числа со знаком произвольной точности.
[Android.Runtime.Register("java/math/BigDecimal", DoNotGenerateAcw=true)]
public class BigDecimal : Java.Lang.Number, IDisposable, 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, для представления режима округления) не рекомендуется; вместо этого следует использовать значения RoundingModeenumперечисления (например 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 значение, значение которого приблизительно (или точно) равно операнду, но масштаб или точность которого является указанным значением; то есть увеличивает или уменьшает точность хранимого числа с минимальным эффектом на его значение. Операции перемещения десятичной запятой #movePointLeft movePointLeft (#movePointRight movePointRightиBigDecimal) возвращают созданный из операнда, перемещая десятичную точку на указанное расстояние в указанном направлении.
Как 32-разрядное целое число, набор значений для масштабирования велик, но привязан. Если масштаб результата превысит диапазон 32-разрядного целого числа, либо по переполнению, либо по переполнению, операция может вызвать исключение ArithmeticException.
Для краткости и ясности псевдокод используется во всех описаниях BigDecimal методов. Псевдокодовое выражение (i + j) является коротким для " BigDecimal значение, значение которого является BigDecimali добавленным в BigDecimaljэто выражение ". Выражение (i == j) псевдокода сокращено для "true, если и только еслиBigDecimaliпредставляет то же значение, что BigDecimaljи ". Другие псевдокодовые выражения интерпретируются аналогичным образом. Квадратные скобки используются для представления конкретной BigInteger пары масштабирования, определяющей BigDecimal значение. Например, [19, 2] числовое BigDecimal значение равно 0,19 с масштабом 2.
Все методы и конструкторы для этого класса создаются NullPointerException при передаче null ссылки на объект для любого входного параметра.
Добавлено в версии 1.1.
Java документации по java.math.BigDecimal.
Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".
Конструкторы
| Имя. | Описание |
|---|---|
| BigDecimal(BigInteger, Int32, MathContext) |
Преобразует немасштабированное |
| BigDecimal(BigInteger, Int32) |
Преобразует немасштабированное |
| BigDecimal(BigInteger, MathContext) |
Преобразуется |
| BigDecimal(BigInteger) |
Преобразуется |
| BigDecimal(Char[], Int32, Int32, MathContext) |
Преобразует представление |
| BigDecimal(Char[], Int32, Int32) |
Преобразует представление |
| BigDecimal(Char[], MathContext) |
Преобразует представление |
| BigDecimal(Char[]) |
Преобразует представление |
| BigDecimal(Double, MathContext) |
Преобразуется |
| BigDecimal(Double) |
Преобразуется |
| BigDecimal(Int32, MathContext) |
Преобразует объект в |
| BigDecimal(Int32) |
Преобразуется |
| BigDecimal(Int64, MathContext) |
Преобразуется |
| BigDecimal(Int64) |
Преобразуется |
| BigDecimal(IntPtr, JniHandleOwnership) |
Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения. |
| BigDecimal(String, MathContext) |
Преобразует строковое представление a в |
| BigDecimal(String) |
Преобразует строковое представление объекта |
Поля
| Имя. | Описание |
|---|---|
| RoundCeiling |
Циклический режим округления в направлении положительной бесконечности. |
| RoundDown |
Округление режима округления к нулю. |
| RoundFloor |
Циклический режим округления к отрицательной бесконечности. |
| RoundHalfDown |
Циклический режим округления к "ближайшему соседу", если оба соседа не эквивалентны, в этом случае округление вниз. |
| RoundHalfEven |
Циклический режим округления к "ближайшему соседу", если оба соседа не эквивалентны, в этом случае округляются к даже соседу. |
| RoundHalfUp |
Циклический режим округления к "ближайшему соседу", если оба соседа не эквивалентны, в этом случае округляется. |
| RoundUnnecessary |
Режим округления для утверждения о том, что запрошенная операция имеет точный результат, поэтому округление не требуется. |
| RoundUp |
Режим округления до нуля. |
Свойства
| Имя. | Описание |
|---|---|
| Class |
Возвращает класс среды выполнения этого |
| Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
| JniIdentityHashCode |
Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия. (Унаследовано от Object) |
| JniManagedPeerState |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от JavaObject) |
| JniPeerMembers |
Возвращает члены однорангового узла JNI для этого типа. |
| One |
Значение 1 с масштабом 0. |
| PeerReference |
Возвращает ссылку на объект JNI для этого Java однорангового узла. (Унаследовано от Object) |
| Ten |
Значение 10 с масштабом 0. |
| ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
| ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
| Zero |
Значение 0 с масштабом 0. |
Методы
| Имя. | Описание |
|---|---|
| Abs() |
|
| Abs(MathContext) |
|
| Add(BigDecimal, MathContext) |
|
| Add(BigDecimal) |
|
| ByteValue() |
Возвращает значение указанного числа в виде |
| ByteValueExact() |
Преобразует это |
| Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от Object) |
| CompareTo(BigDecimal) |
Сравнивает это |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от JavaObject) |
| Dispose() |
Освобождает ресурсы, удерживаемые этим Java одноранговым узлом. (Унаследовано от Object) |
| Dispose(Boolean) |
Освобождает ресурсы, удерживаемые этим Java одноранговым узлом. (Унаследовано от Object) |
| DisposeUnlessReferenced() |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от JavaObject) |
| Divide(BigDecimal, Int32, RoundingMode) |
|
| Divide(BigDecimal, Int32, RoundOptions) |
|
| Divide(BigDecimal, MathContext) |
|
| Divide(BigDecimal, RoundingMode) |
|
| Divide(BigDecimal, RoundOptions) |
|
| Divide(BigDecimal) |
|
| DivideAndRemainder(BigDecimal, MathContext) |
Возвращает массив двух элементов |
| DivideAndRemainder(BigDecimal) |
Возвращает массив двух элементов |
| DivideToIntegralValue(BigDecimal, MathContext) |
|
| DivideToIntegralValue(BigDecimal) |
|
| DoubleValue() |
Преобразует этот объект |
| Equals(Object) |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от JavaObject) |
| Equals(Object) |
Указывает, равен ли другой объект этому объекту. (Унаследовано от Object) |
| FloatValue() |
Преобразует этот объект |
| GetHashCode() |
Возвращает хэш-значение кода для объекта. (Унаследовано от Object) |
| IntValue() |
Преобразует это |
| IntValueExact() |
Преобразует это |
| JavaFinalize() |
Устаревшие.
Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет. (Унаследовано от Object) |
| LongValue() |
Преобразует этот объект |
| LongValueExact() |
Преобразует это |
| Max(BigDecimal) |
Возвращает максимальное значение этого |
| Min(BigDecimal) |
Возвращает минимальное значение этого |
| MovePointLeft(Int32) |
|
| MovePointRight(Int32) |
|
| Multiply(BigDecimal, MathContext) |
|
| Multiply(BigDecimal) |
|
| Negate() |
|
| Negate(MathContext) |
|
| Notify() |
Просыпается один поток, ожидающий монитора этого объекта. (Унаследовано от Object) |
| NotifyAll() |
Просыпает все потоки, ожидающие монитора этого объекта. (Унаследовано от Object) |
| Plus() |
|
| Plus(MathContext) |
|
| Pow(Int32, MathContext) |
|
| Pow(Int32) |
|
| Precision() |
Возвращает точность этого |
| Remainder(BigDecimal, MathContext) |
|
| Remainder(BigDecimal) |
|
| Round(MathContext) |
Возвращает округленное округление |
| Scale() |
Возвращает масштаб этого |
| ScaleByPowerOfTen(Int32) |
Возвращает BigDecimal, числовое значение которого равно ( |
| SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от JavaObject) |
| SetScale(Int32, RoundingMode) |
|
| SetScale(Int32, RoundOptions) |
|
| SetScale(Int32) |
|
| ShortValue() |
Возвращает значение указанного числа в виде |
| ShortValueExact() |
Преобразует это |
| Signum() |
Возвращает функцию знака этой |
| Sqrt(MathContext) |
Возвращает приближение к квадрату корня |
| StripTrailingZeros() |
|
| Subtract(BigDecimal, MathContext) |
|
| Subtract(BigDecimal) |
|
| ToArray<T>() |
Создает управляемый массив из этого Java оболочки массива. (Унаследовано от Object) |
| ToBigInteger() |
Преобразует этот объект |
| ToBigIntegerExact() |
Преобразует это |
| ToEngineeringString() |
Возвращает строковое представление этого |
| ToPlainString() |
Возвращает строковое представление этого |
| ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
| Ulp() |
Возвращает размер ulp, единицу в последнем месте. |
| UnregisterFromRuntime() |
Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия. (Унаследовано от Object) |
| UnscaledValue() |
|
| ValueOf(Double) |
Преобразует его |
| ValueOf(Int64, Int32) |
Преобразует немасштабированное |
| ValueOf(Int64) |
Преобразует |
| Wait() |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, путем <><уведомления/>em или <эм>прерванного</em.> (Унаследовано от Object) |
| Wait(Int64, Int32) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
| Wait(Int64) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя. | Описание |
|---|---|
| IComparable.CompareTo(Object) |
Сравнивает это значение с указанным объектом. |
| IJavaPeerable.Disposed() |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от JavaObject) |
| IJavaPeerable.Finalized() |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. (Унаследовано от JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. |
Методы расширения
| Имя. | Описание |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Возвращает имя JNI типа экземпляра |
| JavaAs<TResult>(IJavaPeerable) |
Попробуйте принуждать к типу |
| JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
| JavaCast<TResult>(IJavaObject) |
Неизменяемые, произвольные десятичные числа со знаком произвольной точности. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Попробуйте принуждать к типу |