Поделиться через


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
Наследование
BigDecimal
Атрибуты
Реализации

Комментарии

Неизменяемые, произвольные десятичные числа со знаком произвольной точности. A BigDecimal состоит из произвольного целого числа #unscaledValue() немасштабированного значения и 32-разрядного целого числа #scale(). Если значение равно нулю или положительно, масштаб — это число цифр справа от десятичной запятой. Если отрицательный, немасштабированное значение числа умножается на десять на силу отрицания шкалы. Таким образом, значение числа, представленного таким BigDecimal образом (unscaledValue &times; 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 значение, значение которого приблизительно (или точно) равно операнду, но масштаб или точность которого является указанным значением; то есть увеличивает или уменьшает точность хранимого числа с минимальным эффектом на его значение. Операции перемещения десятичной запятой BigDecimal (#movePointLeft movePointLeftи#movePointRight movePointRight) возвращают созданный из операнда, перемещая десятичную точку на указанное расстояние в указанном направлении.

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

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

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

Добавлено в версии 1.1.

Документация по Java для java.math.BigDecimal.

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Конструкторы

BigDecimal(BigInteger)

Преобразуется BigInteger в BigDecimal.

BigDecimal(BigInteger, Int32)

Преобразует немасштабированное BigIntegerint значение и масштаб в .BigDecimal

BigDecimal(BigInteger, Int32, MathContext)

Преобразует немасштабированное BigInteger значение и int масштаб в BigDecimalмасштаб с округлением в соответствии с параметрами контекста.

BigDecimal(BigInteger, MathContext)

Преобразуется BigInteger в BigDecimal округление в соответствии с параметрами контекста.

BigDecimal(Char[])

Преобразует представление BigDecimal массива символов в объект BigDecimal, принимаюющий ту же последовательность символов, что #BigDecimal(String) и конструктор.

BigDecimal(Char[], Int32, Int32)

Преобразует представление BigDecimal массива символов в объект BigDecimal, принимаюющее ту же последовательность символов, что #BigDecimal(String) и конструктор, позволяя указать вложенный массив.

BigDecimal(Char[], Int32, Int32, MathContext)

Преобразует представление BigDecimal массива символов в символьный BigDecimalмассив, принимаюющий ту же последовательность символов, что #BigDecimal(String) и конструктор, позволяя указывать вложенный массив и округлять в соответствии с параметрами контекста.

BigDecimal(Char[], MathContext)

Преобразует представление BigDecimal массива символов в объект BigDecimal, принимаюющее ту же последовательность символов, что #BigDecimal(String) и конструктор, и округление в соответствии с параметрами контекста.

BigDecimal(Double)

Преобразуется double в BigDecimal точное десятичное представление doubleдвоичного значения с плавающей запятой.

BigDecimal(Double, MathContext)

Преобразуется double в BigDecimalобъект с округлением в соответствии с параметрами контекста.

BigDecimal(Int32)

Преобразуется int в BigDecimal.

BigDecimal(Int32, MathContext)

Преобразует объект в intBigDecimalокругление в соответствии с параметрами контекста.

BigDecimal(Int64)

Преобразуется long в BigDecimal.

BigDecimal(Int64, MathContext)

Преобразуется long в BigDecimalобъект с округлением в соответствии с параметрами контекста.

BigDecimal(IntPtr, JniHandleOwnership)

Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения.

BigDecimal(String)

Преобразует строковое представление объекта BigDecimal в объект BigDecimal.

BigDecimal(String, MathContext)

Преобразует строковое представление a в BigDecimal объект BigDecimal, принимающие те же строки, что #BigDecimal(String) и конструктор, с округлением в соответствии с параметрами контекста.

Поля

RoundCeiling

Циклический режим округления в направлении положительной бесконечности.

RoundDown

Округление режима округления к нулю.

RoundFloor

Циклический режим округления к отрицательной бесконечности.

RoundHalfDown

Циклический режим округления к "ближайшему соседу", если оба соседа не эквивалентны, в этом случае округление вниз.

RoundHalfEven

Циклический режим округления к "ближайшему соседу", если оба соседа не эквивалентны, в этом случае округляются к даже соседу.

RoundHalfUp

Циклический режим округления к "ближайшему соседу", если оба соседа не эквивалентны, в этом случае округляется.

RoundUnnecessary

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

RoundUp

Режим округления до нуля.

Свойства

Class

Возвращает класс среды выполнения этого Objectобъекта.

(Унаследовано от Object)
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()

BigDecimal Возвращает значение, значение которого является абсолютным значением этогоBigDecimal, и масштаб которого являетсяthis.scale().

Abs(MathContext)

BigDecimal Возвращает значение, значение которого является абсолютным значением этого BigDecimalпараметра, с округлением в соответствии с параметрами контекста.

Add(BigDecimal)

BigDecimal Возвращает значение, значение которого имеет (this + augend)значение, и масштаб которого имеет значениеmax(this.scale(), augend.scale()).

Add(BigDecimal, MathContext)

BigDecimal Возвращает значение, значение которого — (this + augend)округление в соответствии с параметрами контекста.

ByteValue()

Возвращает значение указанного числа в виде byte.

(Унаследовано от Number)
ByteValueExact()

Преобразует это BigDecimal в значение , проверяя наличие потерянных сведений byte.

Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
CompareTo(BigDecimal)

Сравнивает это BigDecimal с указанным BigDecimal.

Dispose()

Неизменяемые, произвольные десятичные числа со знаком произвольной точности.

(Унаследовано от Object)
Dispose(Boolean)

Неизменяемые, произвольные десятичные числа со знаком произвольной точности.

(Унаследовано от Object)
Divide(BigDecimal)

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

Divide(BigDecimal, Int32, RoundingMode)

BigDecimal Возвращает значение, для которого задано (this / divisor)значение и масштаб которого указан.

Divide(BigDecimal, Int32, RoundOptions)

BigDecimal Возвращает значение, для которого задано (this / divisor)значение и масштаб которого указан.

Divide(BigDecimal, MathContext)

BigDecimal Возвращает значение, значение которого — (this / divisor)округление в соответствии с параметрами контекста.

Divide(BigDecimal, RoundingMode)

BigDecimal Возвращает значение, значение которого имеет (this / divisor)значение, и масштаб которого имеет значениеthis.scale().

Divide(BigDecimal, RoundOptions)

BigDecimal Возвращает значение, значение которого имеет (this / divisor)значение, и масштаб которого имеет значениеthis.scale().

DivideAndRemainder(BigDecimal)

Возвращает массив двух элементов BigDecimal , содержащий результат divideToIntegralValue , за которым следует результат remainder двух операндов.

DivideAndRemainder(BigDecimal, MathContext)

Возвращает массив двух элементов BigDecimal , содержащий результат, за которым следует результат divideToIntegralValueremainder двух операндов, вычисляемых с округлением в соответствии с параметрами контекста.

DivideToIntegralValue(BigDecimal)

BigDecimal Возвращает значение, значение которого является целочисленной частью квитента(this / divisor), округленной вниз.

DivideToIntegralValue(BigDecimal, MathContext)

BigDecimal Возвращает значение, значение которого является целочисленной частью(this / divisor).

DoubleValue()

Преобразует этот объект BigDecimal в double.

Equals(Object)

Указывает, равен ли другой объект этому объекту.

(Унаследовано от Object)
FloatValue()

Преобразует этот объект BigDecimal в float.

GetHashCode()

Возвращает значение хэш-кода для объекта.

(Унаследовано от Object)
IntValue()

Преобразует это BigDecimal в объект int.

IntValueExact()

Преобразует это BigDecimal в проверку потерянных сведений int.

JavaFinalize()

Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет.

(Унаследовано от Object)
LongValue()

Преобразует этот объект BigDecimal в long.

LongValueExact()

Преобразует это BigDecimal в значение , проверяя наличие потерянных сведений long.

Max(BigDecimal)

Возвращает максимальное значение этого BigDecimal и val.

Min(BigDecimal)

Возвращает минимальное значение этого BigDecimal и val.

MovePointLeft(Int32)

BigDecimal Возвращает значение, эквивалентное этому, с десятичной запятой, перемещаемой n влево.

MovePointRight(Int32)

BigDecimal Возвращает эквивалент этого значения с десятичной запятой, перемещаемой n вправо.

Multiply(BigDecimal)

BigDecimal Возвращает значение, значение которого имеет (this &times; multiplicand)значение, и масштаб которого имеет значение(this.scale() + multiplicand.scale()).

Multiply(BigDecimal, MathContext)

BigDecimal Возвращает значение, значение которого — (this &times; multiplicand)округление в соответствии с параметрами контекста.

Negate()

BigDecimal Возвращает значение, значение которого имеет (-this)значение, и масштаб которого имеет значениеthis.scale().

Negate(MathContext)

BigDecimal Возвращает значение, значение которого — (-this)округление в соответствии с параметрами контекста.

Notify()

Пробуждение одного потока, ожидающего монитора этого объекта.

(Унаследовано от Object)
NotifyAll()

Просыпает все потоки, ожидающие монитора этого объекта.

(Унаследовано от Object)
Plus()

BigDecimal Возвращает значение, значение которого имеет (+this)значение, и масштаб которого имеет значениеthis.scale().

Plus(MathContext)

BigDecimal Возвращает значение, значение которого — (+this)округление в соответствии с параметрами контекста.

Pow(Int32)

BigDecimal Возвращает значение, значение (this<sup>n</sup>)которого имеет значение , мощность вычисляется точно, до неограниченной точности.

Pow(Int32, MathContext)

BigDecimal Возвращает значение, значение которого равно(this<sup>n</sup>).

Precision()

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

Remainder(BigDecimal)

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

Remainder(BigDecimal, MathContext)

BigDecimal Возвращает значение, значение которого — (this % divisor)округление в соответствии с параметрами контекста.

Round(MathContext)

Возвращает округленное округление BigDecimal в соответствии с MathContext параметрами.

Scale()

Возвращает масштаб этогоBigDecimal.

ScaleByPowerOfTen(Int32)

Возвращает BigDecimal, числовое значение которого равно (this * 10<sup>n</sup>).

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
SetScale(Int32)

BigDecimal Возвращает масштаб, масштаб которого является указанным значением, и значение которого числовое значение равно этому BigDecimalзначению.

SetScale(Int32, RoundingMode)

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

SetScale(Int32, RoundOptions)

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

ShortValue()

Возвращает значение указанного числа в виде short.

(Унаследовано от Number)
ShortValueExact()

Преобразует это BigDecimal в значение , проверяя наличие потерянных сведений short.

Signum()

Возвращает функцию знака этой BigDecimalфункции.

Sqrt(MathContext)

Возвращает приближение к квадрату корня this с округлением в соответствии с параметрами контекста.

StripTrailingZeros()

BigDecimal Возвращает числовое значение, равное этому, но с любыми конечными нулями, удаленными из представления.

Subtract(BigDecimal)

BigDecimal Возвращает значение, значение которого имеет (this - subtrahend)значение, и масштаб которого имеет значениеmax(this.scale(), subtrahend.scale()).

Subtract(BigDecimal, MathContext)

BigDecimal Возвращает значение, значение которого — (this - subtrahend)округление в соответствии с параметрами контекста.

ToArray<T>()

Неизменяемые, произвольные десятичные числа со знаком произвольной точности.

(Унаследовано от Object)
ToBigInteger()

Преобразует этот объект BigDecimal в BigInteger.

ToBigIntegerExact()

Преобразует это BigDecimal в значение , проверяя наличие потерянных сведений BigInteger.

ToEngineeringString()

Возвращает строковое представление этого BigDecimal, используя нотацию инженерии, если требуется экспонент.

ToPlainString()

Возвращает строковое представление этого BigDecimal без поля экспонента.

ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
Ulp()

Возвращает размер ulp, единицу в последнем месте.BigDecimal

UnregisterFromRuntime()

Неизменяемые, произвольные десятичные числа со знаком произвольной точности.

(Унаследовано от Object)
UnscaledValue()

BigInteger Возвращает значение, значение которого является немасштабируемым значением этогоBigDecimal.

ValueOf(Double)

Преобразует его double в BigDecimalканоническое строковое представление, doubleпредоставленное методом Double#toString(double) .

ValueOf(Int64)

Преобразует long значение в BigDecimal шкалу с нулевым значением.

ValueOf(Int64, Int32)

Преобразует немасштабированное longint значение и масштаб в .BigDecimal

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)

Неизменяемые, произвольные десятичные числа со знаком произвольной точности.

Применяется к