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 com sinais de precisão arbitrária e imutáveis.
[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 com sinais de precisão arbitrária e imutáveis. A BigDecimal consiste em um valor inteiro de precisão arbitrária #unscaledValue() não dimensionado e uma escala de inteiro de 32 bits #scale(). Se for 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 elevado à potência 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.
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 será lançado; caso contrário, os cálculos podem ser realizados para uma precisão e modo de arredondamento escolhidos, fornecendo um objeto apropriado MathContext para a operação. Em ambos os casos, oito <modos< de arredondamento em>/em> são fornecidos para o controle do 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 RoundingModeenum, (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 aceitam 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 de dividir, o quociente exato pode ter uma expansão decimal infinitamente longa; por exemplo, 1 dividido por 3. Se o quociente tiver uma expansão decimal não terminante e a operação for especificada para retornar um resultado exato, an ArithmeticException será lançado. Caso contrário, o resultado exato da divisão será retornado, como feito para outras operações.
Quando a configuração de precisão não é 0, as regras de BigDecimal aritmética são amplamente compatíveis com os modos de operação selecionados da aritmética definida 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 o mesmo valor numérico pode ter representações diferentes (com escalas diferentes), as regras de aritmética e arredondamento devem especificar o resultado numérico e a escala usada na representação do resultado.
As diferentes representações do mesmo valor numérico são chamadas de membros da mesma coorte. A ordem natural #compareTo(BigDecimal) de BigDecimal considera os membros da mesma coorte iguais entre si. Em contraste, o #equals(Object) equals método requer que o valor numérico e a representação sejam os mesmos para que a igualdade seja mantida. 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 MathContextconfiguração do precision ; isso 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 calculado primeiro e depois 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 carry 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 à esquerda 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 preferida para cada operação está listada na tabela abaixo.
<table class="striped" style="text-align:left">caption Escalas preferidas para resultados de operações <aritméticas /caption><thead><tr><th scope="col">Operation</th><th scope="col">Escala preferida de resultado</th></tr></thead<>tbody<>tr><th scope="row">Add</th><td>max(addend.scale(), augend.scale())/<td><tr><th scope="row">Subtrair><</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">Raiz< quadrada/th><td>radicand.scale()/2</td<>/tbody></table>
Essas escalas são as usadas pelos métodos que retornam resultados aritméticos exatos; exceto que uma divisão exata pode ter que usar uma escala maior, pois o resultado exato pode ter mais dígitos. Por exemplo, 1/32 é 0.03125.
Antes do arredondamento, a escala do resultado intermediário lógico exato é 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 menor escala que possa 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, arredondando 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 descartados. Se o arredondamento fizer com que uma propagação de transporte crie uma nova posição de dígito de alta ordem, 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 em mais de uma unidade no último lugar, um #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 dimensionamento/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, elas aumentam ou diminuem a precisão do número armazenado com efeito mínimo em 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 estouro negativo, a operação poderá lançar um ArithmeticException.
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) pseudo-código é uma abreviação de "a BigDecimal cujo valor é o BigDecimali do adicionado ao do BigDecimalj". A expressão (i == j) de pseudocódigo é uma abreviação de "true se e somente se o BigDecimali representa o mesmo valor que o BigDecimalj." Outras expressões de pseudocódigo são interpretadas de forma semelhante. Os colchetes são usados para representar o par particular BigInteger e o par de escalas que definem um BigDecimal valor; por exemplo, [19, 2] é numericamente BigDecimal igual a 0,19 com 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 usadas de acordo com os termos descritos na Licença de Atribuição Creative Commons 2.5.
Construtores
| BigDecimal(BigInteger, Int32, MathContext) |
Converte um |
| BigDecimal(BigInteger, Int32) |
Converte um |
| BigDecimal(BigInteger, MathContext) |
Traduz a |
| BigDecimal(BigInteger) |
Traduz a |
| BigDecimal(Char[], Int32, Int32, MathContext) |
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[], MathContext) |
Converte uma representação de matriz de caracteres de a |
| BigDecimal(Char[]) |
Converte uma representação de matriz de caracteres de a |
| BigDecimal(Double, MathContext) |
Converte a |
| BigDecimal(Double) |
Traduz a |
| BigDecimal(Int32, MathContext) |
Traduz um |
| BigDecimal(Int32) |
Traduz um |
| BigDecimal(Int64, MathContext) |
Converte a |
| BigDecimal(Int64) |
Traduz a |
| BigDecimal(IntPtr, JniHandleOwnership) |
Um construtor usado ao criar representações gerenciadas de objetos JNI; chamado pelo runtime. |
| BigDecimal(String, MathContext) |
Converte a representação de cadeia de caracteres de a |
| BigDecimal(String) |
Converte a representação de cadeia de caracteres de a |
Campos
| RoundCeiling |
Modo de arredondamento para arredondar em direção ao infinito positivo. |
| RoundDown |
Modo de arredondamento para arredondar em direção a zero. |
| RoundFloor |
Modo de arredondamento para arredondar em direção ao 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 com sinais de precisão arbitrária e imutáveis. (Herdado de Object) |
| JniPeerMembers |
Números decimais com sinais de precisão arbitrária e imutáveis. |
| One |
O valor 1, com uma escala de 0. |
| PeerReference |
Números decimais com sinais de precisão arbitrária e imutáveis. (Herdado de Object) |
| Ten |
O valor 10, com uma escala de 0. |
| ThresholdClass |
Essa API é compatível com a infraestrutura Mono para Android e não se destina a ser usada diretamente do seu código. |
| ThresholdType |
Essa API é compatível com 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, MathContext) |
Retorna um |
| Add(BigDecimal) |
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 com sinais de precisão arbitrária e imutáveis. (Herdado de Object) |
| Dispose(Boolean) |
Números decimais com sinais de precisão arbitrária e imutáveis. (Herdado de Object) |
| 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 |
| Divide(BigDecimal) |
Retorna um |
| DivideAndRemainder(BigDecimal, MathContext) |
Retorna uma matriz de dois elementos |
| DivideAndRemainder(BigDecimal) |
Retorna uma matriz de dois elementos |
| DivideToIntegralValue(BigDecimal, MathContext) |
Retorna um |
| DivideToIntegralValue(BigDecimal) |
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, MathContext) |
Retorna um |
| Multiply(BigDecimal) |
Retorna um |
| Negate() |
Retorna um |
| Negate(MathContext) |
Retorna um |
| Notify() |
Ativa um único thread que está aguardando no monitor desse 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, MathContext) |
Retorna um |
| Pow(Int32) |
Retorna um |
| Precision() |
Retorna a precisão deste |
| Remainder(BigDecimal, MathContext) |
Retorna um |
| Remainder(BigDecimal) |
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, RoundingMode) |
Retorna um |
| SetScale(Int32, RoundOptions) |
Retorna um |
| SetScale(Int32) |
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 para a raiz quadrada de com arredondamento de |
| StripTrailingZeros() |
Retorna um |
| Subtract(BigDecimal, MathContext) |
Retorna um |
| Subtract(BigDecimal) |
Retorna um |
| ToArray<T>() |
Números decimais com sinais de precisão arbitrária e imutáveis. (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 na última casa, deste |
| UnregisterFromRuntime() |
Números decimais com sinais de precisão arbitrária e imutáveis. (Herdado de Object) |
| UnscaledValue() |
Retorna um |
| ValueOf(Double) |
Traduz a |
| ValueOf(Int64, Int32) |
Converte um |
| ValueOf(Int64) |
Converte um |
| Wait() |
Faz com que o thread atual aguarde até que seja despertado, normalmente sendo <notificado></em> ou <em>interrompido</em>. (Herdado de Object) |
| Wait(Int64, Int32) |
Faz com que o thread atual aguarde até que seja ativado, normalmente sendo <notificado></em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
| Wait(Int64) |
Faz com que o thread atual aguarde até que seja ativado, normalmente sendo <notificado></em> ou <em>interrompido</em>, ou até que uma determinada quantidade de tempo real tenha decorrido. (Herdado de Object) |
Implantações explícitas de interface
| IComparable.CompareTo(Object) |
Números decimais com sinais de precisão arbitrária e imutáveis. |
| IJavaPeerable.Disposed() |
Números decimais com sinais de precisão arbitrária e imutáveis. (Herdado de Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
Números decimais com sinais de precisão arbitrária e imutáveis. (Herdado de Object) |
| IJavaPeerable.Finalized() |
Números decimais com sinais de precisão arbitrária e imutáveis. (Herdado de Object) |
| IJavaPeerable.JniManagedPeerState |
Números decimais com sinais de precisão arbitrária e imutáveis. (Herdado de Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Números decimais com sinais de precisão arbitrária e imutáveis. (Herdado de Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Números decimais com sinais de precisão arbitrária e imutáveis. (Herdado de Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Números decimais com sinais de precisão arbitrária e imutáveis. (Herdado de Object) |
Métodos de Extensão
| JavaCast<TResult>(IJavaObject) |
Executa uma conversão de tipo verificada pelo tempo de execução do Android. |
| JavaCast<TResult>(IJavaObject) |
Números decimais com sinais de precisão arbitrária e imutáveis. |
| GetJniTypeName(IJavaPeerable) |
Números decimais com sinais de precisão arbitrária e imutáveis. |