BigDecimal Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Números decimais assinados imutáveis e de precisão arbitrária.
[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
- Herança
- Atributos
- Implementações
Comentários
Números decimais assinados imutáveis e de precisão arbitrária. A BigDecimal
consiste em um valor inteiro de precisão arbitrária #unscaledValue() não dimensionado e uma escala inteira de 32 bits #scale(). Se zero ou positivo, a escala é o número de dígitos à direita da vírgula decimal. Se negativo, o valor não escalonado do número é multiplicado por dez ao poder da negação da escala. O valor do número representado pelo BigDecimal
é, portanto, (unscaledValue × 10<sup>-scale</sup>)
.
A BigDecimal
classe fornece operações para aritmética, manipulação de escala, arredondamento, comparação, hash e conversão de formato. O #toString
método fornece uma representação canônica de um BigDecimal
arquivo .
A BigDecimal
classe dá ao usuário controle total sobre o comportamento de arredondamento. Se nenhum modo de arredondamento for especificado e o resultado exato não puder ser representado, um ArithmeticException
é lançado, caso contrário, os cálculos podem ser realizados para um modo de precisão e arredondamento escolhido, fornecendo um objeto apropriado MathContext
para a operação. Em ambos os casos, oito <>modos<> de arredondamento são fornecidos para o controle de arredondamento. O uso dos campos inteiros nessa classe (como #ROUND_HALF_UP
) para representar o modo de arredondamento foi preterido, os valores de enumeração do RoundingMode
enum
, (como RoundingMode#HALF_UP
) devem ser usados em vez disso.
Quando um MathContext
objeto é fornecido com uma configuração de precisão de 0 (por exemplo, MathContext#UNLIMITED
), as operações aritméticas são exatas, assim como os métodos aritméticos que não tomam nenhum MathContext
objeto. Como corolário do cálculo do resultado exato, a configuração do modo de arredondamento de um MathContext
objeto com uma configuração de precisão de 0 não é usada e, portanto, irrelevante. No caso da divisão, o quociente exato poderia ter uma expansão decimal infinitamente longa; por exemplo, 1 dividido por 3. Se o quociente tiver uma expansão decimal não terminativa e a operação for especificada para retornar um resultado exato, um ArithmeticException
será lançado. Caso contrário, o resultado exato da divisão é retornado, como feito para outras operações.
Quando a configuração de precisão não é 0, as regras da BigDecimal
aritmética são amplamente compatíveis com modos selecionados de operação da aritmética definidos em ANSI X3.274-1996 e ANSI X3.274-1996/AM 1-2000 (seção 7.4). Ao contrário desses padrões, BigDecimal
inclui muitos modos de arredondamento. Quaisquer conflitos entre esses padrões ANSI e a BigDecimal
especificação são resolvidos em favor do BigDecimal
.
Como um mesmo valor numérico pode ter representações diferentes (com escalas diferentes), as regras de aritmética e arredondamento devem especificar tanto o resultado numérico quanto a escala usada na representação do resultado.
As diferentes representações do mesmo valor numérico são chamadas de membros de uma mesma coorte. A ordem natural #compareTo(BigDecimal) de BigDecimal
considera os membros da mesma coorte iguais entre si. Em contraste, o método requer que o valor numérico e a representação sejam os mesmos para que a #equals(Object) equals
igualdade se mantenha. Os resultados de métodos como #scale()
e #unscaledValue()
serão diferentes para valores numericamente iguais com representações diferentes.
Em geral, os modos de arredondamento e a configuração de precisão determinam como as operações retornam resultados com um número limitado de dígitos quando o resultado exato tem mais dígitos (talvez infinitamente muitos no caso de divisão e raiz quadrada) do que o número de dígitos retornados.
Primeiro, o número total de dígitos a serem retornados é especificado pela MathContext
configuração 'sprecision
, que determina a precisão do resultado. A contagem de dígitos começa a partir do dígito diferente de zero mais à esquerda do resultado exato. O modo de arredondamento determina como os dígitos à direita descartados afetam o resultado retornado.
Para todos os operadores aritméticos, a operação é realizada como se um resultado intermediário exato fosse primeiro calculado e, em seguida, arredondado para o número de dígitos especificado pela configuração de precisão (se necessário), usando o modo de arredondamento selecionado. Se o resultado exato não for retornado, algumas posições de dígitos do resultado exato serão descartadas. Quando o arredondamento aumenta a magnitude do resultado retornado, é possível que uma nova posição de dígito seja criada por um carregamento que se propaga para um dígito "9" à esquerda. Por exemplo, arredondar o valor 999,9 para três dígitos arredondando para cima seria numericamente igual a mil, representado como 100&vezes; 10<sup>1</sup>. Nesses casos, o novo "1" é a posição do dígito principal do resultado retornado.
Para métodos e construtores com um MathContext
parâmetro, se o resultado for inexato, mas o modo de arredondamento for RoundingMode#UNNECESSARY UNNECESSARY
, um ArithmeticException
será lançado.
Além de um resultado lógico exato, cada operação aritmética tem uma escala preferida para representar um resultado. A escala preferencial para cada operação está listada na tabela abaixo.
<table class="striped" style="text-align:left">caption Escalas Preferenciais para Resultados de Operações <Aritméticas /caption<>thead<>tr><th scope="col"Col">Operation</th><scope="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">Multiply</th><td>multiplier.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<>/tbody></table>
Essas escalas são as utilizadas pelos métodos que retornam resultados aritméticos exatos; exceto que uma divisão exata pode ter que usar uma escala maior, uma vez que o resultado exato pode ter mais dígitos. Por exemplo, 1/32
é 0.03125
.
Antes do arredondamento, a escala do resultado intermediário exato lógico é a escala preferida para essa operação. Se o resultado numérico exato não puder ser representado em precision
dígitos, o arredondamento seleciona o conjunto de dígitos a serem retornados e a escala do resultado é reduzida da escala do resultado intermediário para a escala mínima que pode representar os precision
dígitos realmente retornados. Se o resultado exato puder ser representado com no máximo precision
dígitos, a representação do resultado com a escala mais próxima da escala preferida será retornada. Em particular, um quociente exatamente representável pode ser representado em menos de precision
dígitos, removendo zeros à direita e diminuindo a escala. Por exemplo, arredondamento para três dígitos usando o modo de arredondamento de piso RoundingMode#FLOOR, <br>
19/100 = 0.19 // integer=19, scale=2
<br>
mas<br>
21/110 = 0.190 // integer=190, scale=3
<br>
Observe que para adicionar, subtrair e multiplicar, a redução na escala será igual ao número de posições de dígitos do resultado exato que são descartadas. Se o arredondamento fizer com que uma propagação de transporte crie uma nova posição de dígito de ordem alta, um dígito adicional do resultado será descartado do que quando nenhuma nova posição de dígito for criada.
Outros métodos podem ter semântica de arredondamento ligeiramente diferente. Por exemplo, o pow
resultado do método usando o algoritmo especificado #pow(int, MathContext) pode ocasionalmente diferir do resultado matemático arredondado por mais de uma unidade no último lugar, uma #ulp() ulp.
Dois tipos de operações são fornecidos para manipular a escala de um BigDecimal
: operações de escala/arredondamento e operações de movimento de ponto decimal. As operações de escala/arredondamento (#setScale setScale
e #round round
) retornam um BigDecimal
cujo valor é aproximadamente (ou exatamente) igual ao do operando, mas cuja escala ou precisão é o valor especificado, ou seja, aumentam ou diminuem a precisão do número armazenado com efeito mínimo sobre seu valor. As operações de movimento de ponto decimal (#movePointLeft movePointLeft
e #movePointRight movePointRight
) retornam um BigDecimal
criado a partir do operando movendo o ponto decimal a uma distância especificada na direção especificada.
Como um inteiro de 32 bits, o conjunto de valores para a escala é grande, mas limitado. Se a escala de um resultado exceder o intervalo de um inteiro de 32 bits, seja por estouro ou subfluxo, a operação pode lançar um ArithmeticException
arquivo .
Por uma questão de brevidade e clareza, o pseudocódigo é usado em todas as descrições dos BigDecimal
métodos. A expressão (i + j)
pseudocódigo é a abreviação de "a BigDecimal
cujo valor é o BigDecimal
i
do adicionado ao do BigDecimal
j
". A expressão (i == j)
pseudocódigo é abreviada para "true
se e somente se o BigDecimal
i
representa o mesmo valor que o BigDecimal
j
. Outras expressões de pseudocódigo são interpretadas de forma semelhante. Colchetes quadrados são usados para representar o par particular BigInteger
e escala que define um BigDecimal
valor, por exemplo [19, 2] é o BigDecimal
numericamente igual a 0,19 tendo uma escala de 2.
Todos os métodos e construtores para essa classe lançam NullPointerException
quando passada uma referência de null
objeto para qualquer parâmetro de entrada.
Adicionado em 1.1.
Documentação Java para java.math.BigDecimal
.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.
Construtores
BigDecimal(BigInteger) |
Traduz um |
BigDecimal(BigInteger, Int32) |
Converte um |
BigDecimal(BigInteger, Int32, MathContext) |
Traduz um |
BigDecimal(BigInteger, MathContext) |
Traduz um |
BigDecimal(Char[]) |
Converte uma representação de matriz de caracteres de a |
BigDecimal(Char[], Int32, Int32) |
Converte uma representação de matriz de caracteres de a |
BigDecimal(Char[], Int32, Int32, MathContext) |
Converte uma representação de matriz de caracteres de a |
BigDecimal(Char[], MathContext) |
Traduz uma representação de matriz de caracteres de a |
BigDecimal(Double) |
Converte a |
BigDecimal(Double, MathContext) |
Traduz a |
BigDecimal(Int32) |
Traduz um |
BigDecimal(Int32, MathContext) |
Traduz um |
BigDecimal(Int64) |
Traduz um |
BigDecimal(Int64, MathContext) |
Traduz a |
BigDecimal(IntPtr, JniHandleOwnership) |
Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo tempo de execução. |
BigDecimal(String) |
Converte a representação de cadeia de caracteres de um |
BigDecimal(String, MathContext) |
Traduz a representação de cadeia de caracteres de a |
Campos
RoundCeiling |
Modo de arredondamento para arredondar para o infinito positivo. |
RoundDown |
Modo de arredondamento para arredondar para zero. |
RoundFloor |
Modo de arredondamento para arredondar para o infinito negativo. |
RoundHalfDown |
Modo de arredondamento para arredondar para "vizinho mais próximo", a menos que ambos os vizinhos estejam equidistantes, caso em que arredondar para baixo. |
RoundHalfEven |
Modo de arredondamento para arredondar em direção ao "vizinho mais próximo", a menos que ambos os vizinhos estejam equidistantes, nesse caso, arredondar em direção ao vizinho par. |
RoundHalfUp |
Modo de arredondamento para arredondar para "vizinho mais próximo", a menos que ambos os vizinhos estejam equidistantes, caso em que arredondar para cima. |
RoundUnnecessary |
Modo de arredondamento para afirmar que a operação solicitada tem um resultado exato, portanto, nenhum arredondamento é necessário. |
RoundUp |
Modo de arredondamento para arredondar para longe de zero. |
Propriedades
Class |
Retorna a classe de tempo de execução deste |
Handle |
O identificador para a instância subjacente do Android. (Herdado de Object) |
JniIdentityHashCode |
Números decimais assinados imutáveis e de precisão arbitrária. (Herdado de Object) |
JniPeerMembers |
Números decimais assinados imutáveis e de precisão arbitrária. |
One |
O valor 1, com uma escala de 0. |
PeerReference |
Números decimais assinados imutáveis e de precisão arbitrária. (Herdado de Object) |
Ten |
O valor 10, com escala 0. |
ThresholdClass |
Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código. |
ThresholdType |
Esta API suporta a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código. |
Zero |
O valor 0, com uma escala de 0. |
Métodos
Abs() |
Retorna um |
Abs(MathContext) |
Retorna um |
Add(BigDecimal) |
Retorna um |
Add(BigDecimal, MathContext) |
Retorna um |
ByteValue() |
Retorna o valor do número especificado como um |
ByteValueExact() |
Converte isso |
Clone() |
Cria e retorna uma cópia desse objeto. (Herdado de Object) |
CompareTo(BigDecimal) |
Compara isso |
Dispose() |
Números decimais assinados imutáveis e de precisão arbitrária. (Herdado de Object) |
Dispose(Boolean) |
Números decimais assinados imutáveis e de precisão arbitrária. (Herdado de Object) |
Divide(BigDecimal) |
Retorna um |
Divide(BigDecimal, Int32, RoundingMode) |
Retorna um |
Divide(BigDecimal, Int32, RoundOptions) |
Retorna um |
Divide(BigDecimal, MathContext) |
Retorna um |
Divide(BigDecimal, RoundingMode) |
Retorna um |
Divide(BigDecimal, RoundOptions) |
Retorna um |
DivideAndRemainder(BigDecimal) |
Retorna uma matriz de dois elementos |
DivideAndRemainder(BigDecimal, MathContext) |
Retorna uma matriz de dois elementos |
DivideToIntegralValue(BigDecimal) |
Retorna um |
DivideToIntegralValue(BigDecimal, MathContext) |
Retorna um |
DoubleValue() |
Converte essa |
Equals(Object) |
Indica se algum outro objeto é "igual" a este. (Herdado de Object) |
FloatValue() |
Converte essa |
GetHashCode() |
Retorna um valor de código hash para o objeto. (Herdado de Object) |
IntValue() |
Converte isso |
IntValueExact() |
Converte isso |
JavaFinalize() |
Chamado pelo coletor de lixo em um objeto quando a coleta de lixo determina que não há mais referências ao objeto. (Herdado de Object) |
LongValue() |
Converte essa |
LongValueExact() |
Converte isso |
Max(BigDecimal) |
Retorna o máximo deste |
Min(BigDecimal) |
Retorna o mínimo deste |
MovePointLeft(Int32) |
Retorna um |
MovePointRight(Int32) |
Retorna um |
Multiply(BigDecimal) |
Retorna um |
Multiply(BigDecimal, MathContext) |
Retorna um |
Negate() |
Retorna um |
Negate(MathContext) |
Retorna um |
Notify() |
Ativa um único thread que está aguardando no monitor deste objeto. (Herdado de Object) |
NotifyAll() |
Ativa todos os threads que estão aguardando no monitor deste objeto. (Herdado de Object) |
Plus() |
Retorna um |
Plus(MathContext) |
Retorna um |
Pow(Int32) |
Retorna um |
Pow(Int32, MathContext) |
Retorna um |
Precision() |
Retorna a precisão deste |
Remainder(BigDecimal) |
Retorna um |
Remainder(BigDecimal, MathContext) |
Retorna um |
Round(MathContext) |
Retorna um |
Scale() |
Retorna a escala deste |
ScaleByPowerOfTen(Int32) |
Retorna um BigDecimal cujo valor numérico é igual a ( |
SetHandle(IntPtr, JniHandleOwnership) |
Define a propriedade Handle. (Herdado de Object) |
SetScale(Int32) |
Retorna uma |
SetScale(Int32, RoundingMode) |
Retorna um |
SetScale(Int32, RoundOptions) |
Retorna um |
ShortValue() |
Retorna o valor do número especificado como um |
ShortValueExact() |
Converte isso |
Signum() |
Retorna a função signum deste |
Sqrt(MathContext) |
Retorna uma aproximação à raiz quadrada de com arredondamento de acordo com as configurações de |
StripTrailingZeros() |
Retorna um |
Subtract(BigDecimal) |
Retorna um |
Subtract(BigDecimal, MathContext) |
Retorna um |
ToArray<T>() |
Números decimais assinados imutáveis e de precisão arbitrária. (Herdado de Object) |
ToBigInteger() |
Converte essa |
ToBigIntegerExact() |
Converte isso |
ToEngineeringString() |
Retorna uma representação de cadeia de caracteres disso |
ToPlainString() |
Retorna uma representação de cadeia de caracteres disso |
ToString() |
Retorna uma representação de cadeia de caracteres do objeto. (Herdado de Object) |
Ulp() |
Retorna o tamanho de um ulp, uma unidade em último lugar, deste |
UnregisterFromRuntime() |
Números decimais assinados imutáveis e de precisão arbitrária. (Herdado de Object) |
UnscaledValue() |
Retorna um |
ValueOf(Double) |
Converte a |
ValueOf(Int64) |
Converte um |
ValueOf(Int64, Int32) |
Converte um |
Wait() |
Faz com que o thread atual aguarde até que ele seja ativado, normalmente sendo <em notificado</em> ou <em>interrompido</em>>. (Herdado de Object) |
Wait(Int64) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido. (Herdado de Object) |
Wait(Int64, Int32) |
Faz com que o thread atual aguarde até que ele seja despertado, normalmente sendo <em>notificado</em> ou <em interrompido</em>, ou até que>uma certa quantidade de tempo real tenha decorrido. (Herdado de Object) |
Implantações explícitas de interface
IComparable.CompareTo(Object) |
Números decimais assinados imutáveis e de precisão arbitrária. |
IJavaPeerable.Disposed() |
Números decimais assinados imutáveis e de precisão arbitrária. (Herdado de Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Números decimais assinados imutáveis e de precisão arbitrária. (Herdado de Object) |
IJavaPeerable.Finalized() |
Números decimais assinados imutáveis e de precisão arbitrária. (Herdado de Object) |
IJavaPeerable.JniManagedPeerState |
Números decimais assinados imutáveis e de precisão arbitrária. (Herdado de Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Números decimais assinados imutáveis e de precisão arbitrária. (Herdado de Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Números decimais assinados imutáveis e de precisão arbitrária. (Herdado de Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Números decimais assinados imutáveis e de precisão arbitrária. (Herdado de Object) |
Métodos de Extensão
JavaCast<TResult>(IJavaObject) |
Executa uma conversão de tipo verificada em tempo de execução do Android. |
JavaCast<TResult>(IJavaObject) |
Números decimais assinados imutáveis e de precisão arbitrária. |
GetJniTypeName(IJavaPeerable) |
Números decimais assinados imutáveis e de precisão arbitrária. |