BigDecimal Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Numeri decimali con precisione arbitraria non modificabili.
[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
- Ereditarietà
- Attributi
- Implementazioni
Commenti
Numeri decimali con precisione arbitraria non modificabili. Un BigDecimal
oggetto è costituito da un valore intero di precisione arbitrario #unscaledValue() e da una scala di #scale() a 32 bit. Se zero o positivo, la scala è il numero di cifre a destra del punto decimale. Se negativo, il valore non ridimensionato del numero viene moltiplicato per dieci alla potenza della negazione della scala. Il valore del numero rappresentato dall'oggetto BigDecimal
è pertanto (unscaledValue × 10<sup>-scale</sup>)
.
La BigDecimal
classe fornisce operazioni per la manipolazione aritmetica, la modifica della scala, l'arrotondamento, il confronto, l'hashing e la conversione del formato. Il #toString
metodo fornisce una rappresentazione canonica di un BigDecimal
oggetto .
La BigDecimal
classe fornisce al suo utente il controllo completo sul comportamento di arrotondamento. Se non viene specificata alcuna modalità di arrotondamento e il risultato esatto non può essere rappresentato, viene generato un ArithmeticException
oggetto. In caso contrario, i calcoli possono essere eseguiti in una modalità di arrotondamento e precisione scelta fornendo un oggetto appropriato MathContext
all'operazione. In entrambi i casi, vengono fornite otto <>modalità< di arrotondamento/em> per il controllo dell'arrotondamento. L'uso dei campi integer in questa classe (ad esempio ) per rappresentare la modalità di arrotondamento è deprecato. I valori di enumerazione di RoundingMode
enum
, ad esempio #ROUND_HALF_UP
RoundingMode#HALF_UP
) devono essere usati invece.
Quando un MathContext
oggetto viene fornito con un'impostazione di precisione di 0 (ad esempio , ), le operazioni aritmetiche sono esatte, MathContext#UNLIMITED
come sono i metodi aritmetici che non MathContext
accettano alcun oggetto. Come corollario del calcolo del risultato esatto, l'impostazione della modalità di arrotondamento di un MathContext
oggetto con un'impostazione di precisione di 0 non viene usata e quindi irrilevante. Nel caso di divisione, il quoziente esatto potrebbe avere un'espansione decimale infinitamente lunga; ad esempio, 1 diviso per 3. Se il quoziente ha un'espansione decimale non terminata e l'operazione viene specificata per restituire un risultato esatto, viene generato un ArithmeticException
valore. In caso contrario, il risultato esatto della divisione viene restituito, come fatto per altre operazioni.
Quando l'impostazione di precisione non è 0, le regole dell'aritmetica sono ampiamente compatibili con le modalità selezionate di funzionamento dell'aritmetica BigDecimal
definita in ANSI X3.274-1996 e ANSI X3.274-1996/AM 1-2000 (sezione 7.4). A differenza di questi standard, BigDecimal
include molte modalità di arrotondamento. Eventuali conflitti tra questi standard ANSI e la BigDecimal
specifica vengono risolti a favore di BigDecimal
.
Poiché lo stesso valore numerico può avere rappresentazioni diverse (con scale diverse), le regole di aritmetica e arrotondamento devono specificare sia il risultato numerico che la scala utilizzata nella rappresentazione del risultato.
Le diverse rappresentazioni dello stesso valore numerico sono denominate membri della stessa coorte. L'ordine naturale #compareTo(BigDecimal) dei BigDecimal
membri della stessa coorte deve essere uguale tra loro. Al contrario, il metodo richiede che sia #equals(Object) equals
il valore numerico che la rappresentazione siano uguali per l'uguaglianza da tenere. I risultati dei metodi come #scale()
e #unscaledValue()
saranno diversi per valori numericamente uguali con rappresentazioni diverse.
In generale, le modalità di arrotondamento e l'impostazione di precisione determinano il modo in cui le operazioni restituiscono risultati con un numero limitato di cifre quando il risultato esatto ha più cifre (forse molti in caso di divisione e radice quadrata) rispetto al numero di cifre restituite.
Prima di tutto, il numero totale di cifre da restituire viene specificato dall'impostazione MathContext
dell'impostazione precision
. Ciò determina la precisione del risultato. Il conteggio delle cifre inizia dalla cifra più a sinistra del risultato esatto. La modalità di arrotondamento determina la modalità di arrotondamento delle cifre finali che influiscono sul risultato restituito.
Per tutti gli operatori aritmetici, l'operazione viene eseguita come se fosse stato calcolato un risultato intermedio esatto e quindi arrotondato al numero di cifre specificate dall'impostazione di precisione (se necessario), usando la modalità di arrotondamento selezionato. Se il risultato esatto non viene restituito, alcune posizioni cifre del risultato esatto vengono rimosse. Quando l'arrotondamento aumenta la grandezza del risultato restituito, è possibile creare una nuova posizione di cifra da una propagazione del trasporto a una cifra "9" iniziale. Ad esempio, l'arrotondamento del valore 999,9 a tre cifre sarebbe numericamente uguale a 100 volte, rappresentato come 100&volte; 10<sup 1</sup>>. In questi casi, il nuovo "1" è la posizione principale del risultato restituito.
Per i metodi e i costruttori con un MathContext
parametro, se il risultato è inesattiva ma la modalità di arrotondamento è RoundingMode#UNNECESSARY UNNECESSARY
, verrà generata una ArithmeticException
classe.
Oltre a un risultato esatto logico, ogni operazione aritmetica ha una scala preferita per rappresentare un risultato. La scala preferita per ogni operazione è elencata nella tabella seguente.
<table class="striped" style="text-align:left">didascalia Preferred Scales for Results of Arithmetic Operations </didascalia><> thead><tr><th scope="col"Operation</><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>"Multipli</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>
Queste scale sono quelle usate dai metodi che restituiscono risultati aritmetici esatti; ad eccezione del fatto che una divisione esatta potrebbe dover usare una scala più grande poiché il risultato esatto potrebbe avere più cifre. Ad esempio, 1/32
è 0.03125
.
Prima dell'arrotondamento, la scala del risultato intermedio logico è la scala preferita per tale operazione. Se il risultato numerico esatto non può essere rappresentato in precision
cifre, l'arrotondamento seleziona il set di cifre da restituire e la scala del risultato viene ridotta dalla scala del risultato intermedio alla scala minima che può rappresentare le precision
cifre effettivamente restituite. Se il risultato esatto può essere rappresentato con la maggior parte precision
delle cifre, viene restituita la rappresentazione del risultato con la scala più vicina alla scala preferita. In particolare, un quoziente rappresentabile esattamente può essere rappresentato in meno di precision
cifre rimuovendo zero finali e riducendo la scala. Ad esempio, l'arrotondamento a tre cifre usando la modalità di arrotondamento rounding del piano RoundingMode#FLOOR, <br>
19/100 = 0.19 // integer=19, scale=2
<Br>
ma<br>
21/110 = 0.190 // integer=190, scale=3
<Br>
Si noti che per aggiungere, sottraere e moltiplicare, la riduzione della scala equivale al numero di posizioni cifre del risultato esatto che vengono ignorate. Se l'arrotondamento causa la propagazione del trasporto per creare una nuova posizione a cifre di ordine elevato, viene eliminata una cifra aggiuntiva del risultato rispetto alla creazione di una nuova posizione di cifra.
Altri metodi possono avere una semantica di arrotondamento leggermente diverso. Ad esempio, il risultato del pow
metodo usando l'algoritmo specificato #pow(int, MathContext) può essere diverso occasionalmente dal risultato matematico arrotondato da più di un'unità nell'ultima posizione, un #ulp() ulp.
Per modificare la scala di un BigDecimal
oggetto : operazioni di ridimensionamento/arrotondamento e movimento decimale. Le operazioni#setScale setScale
di ridimensionamento/arrotondamento (e #round round
) restituiscono un BigDecimal
valore il cui valore è approssimativamente (o esattamente) uguale a quello dell'operando, ma la cui scala o precisione è il valore specificato, ovvero aumentano o riducono la precisione del numero archiviato con effetto minimo sul relativo valore. Le operazioni di movimento dei punti decimali (#movePointLeft movePointLeft
e #movePointRight movePointRight
) restituiscono un BigDecimal
oggetto creato dall'operando spostando il punto decimale una distanza specificata nella direzione specificata.
Come intero a 32 bit, il set di valori per la scala è di grandi dimensioni, ma delimitato. Se la scala di un risultato supera l'intervallo di un intero a 32 bit, tramite overflow o sottoflow, l'operazione può generare un ArithmeticException
oggetto .
Per motivi di brevità e chiarezza, lo pseudo-codice viene usato in tutte le descrizioni dei BigDecimal
metodi. L'espressione (i + j)
pseudo-code è abbreviata per "un BigDecimal
valore il cui valore è quello dell'aggiunta a quella dell'oggettoj
BigDecimal
i
BigDecimal
". L'espressione (i == j)
pseudo-codice è abbreviata per "true
se e solo se rappresentai
BigDecimal
lo stesso valore dell'oggetto BigDecimal
j
". Altre espressioni pseudo-code vengono interpretate in modo analogo. Le parentesi quadre vengono usate per rappresentare la coppia specifica BigInteger
e di scala che definisce un BigDecimal
valore, ad esempio [19, 2] è BigDecimal
uguale a 0,19 con una scala pari a 2.
Tutti i metodi e i costruttori per questa classe generano NullPointerException
quando viene passato un riferimento a un null
oggetto per qualsiasi parametro di input.
Aggiunta nella versione 1.1.
Documentazione Java per java.math.BigDecimal
.
Le parti di questa pagina sono modifiche in base al lavoro creato e condiviso dal Android Open Source e usato in base ai termini descritti nella .
Costruttori
BigDecimal(BigInteger) |
Converte un oggetto |
BigDecimal(BigInteger, Int32) |
Converte un |
BigDecimal(BigInteger, Int32, MathContext) |
Converte un |
BigDecimal(BigInteger, MathContext) |
Converte un |
BigDecimal(Char[]) |
Converte una rappresentazione di matrice di caratteri di un |
BigDecimal(Char[], Int32, Int32) |
Converte una rappresentazione di matrice di caratteri di un |
BigDecimal(Char[], Int32, Int32, MathContext) |
Converte una rappresentazione di matrice di caratteri di un |
BigDecimal(Char[], MathContext) |
Converte una rappresentazione di matrice di caratteri di un |
BigDecimal(Double) |
Converte un |
BigDecimal(Double, MathContext) |
Converte un |
BigDecimal(Int32) |
Converte un oggetto |
BigDecimal(Int32, MathContext) |
Converte un oggetto |
BigDecimal(Int64) |
Converte un oggetto |
BigDecimal(Int64, MathContext) |
Converte un |
BigDecimal(IntPtr, JniHandleOwnership) |
Costruttore utilizzato durante la creazione di rappresentazioni gestite di oggetti JNI; chiamato dal runtime. |
BigDecimal(String) |
Converte la rappresentazione di stringa di un |
BigDecimal(String, MathContext) |
Converte la rappresentazione di stringa di un |
Campi
RoundCeiling |
Modalità di arrotondamento per arrotondare verso l'infinito positivo. |
RoundDown |
Modalità di arrotondamento per arrotondare verso zero. |
RoundFloor |
Modalità di arrotondamento per arrotondare verso l'infinito negativo. |
RoundHalfDown |
Modalità di arrotondamento per arrotondare verso il "vicino più vicino" a meno che entrambi i vicini non siano equidisti, nel qual caso arrotondare verso il basso. |
RoundHalfEven |
Modalità di arrotondamento per arrotondare verso il "vicino più vicino" a meno che entrambi i vicini non siano equidisti, nel qual caso, arrotondare verso il vicino pari. |
RoundHalfUp |
Modalità di arrotondamento per arrotondare verso il "vicino più vicino" a meno che entrambi i vicini non siano equidisti, nel qual caso arrotondare. |
RoundUnnecessary |
Modalità di arrotondamento per asserire che l'operazione richiesta ha un risultato esatto, pertanto non è necessario arrotondamento. |
RoundUp |
Modalità di arrotondamento per arrotondare da zero. |
Proprietà
Class |
Restituisce la classe di runtime di questo |
Handle |
Handle per l'istanza di Android sottostante. (Ereditato da Object) |
JniIdentityHashCode |
Numeri decimali con precisione arbitraria non modificabili. (Ereditato da Object) |
JniPeerMembers |
Numeri decimali con precisione arbitraria non modificabili. |
One |
Valore 1, con scala pari a 0. |
PeerReference |
Numeri decimali con precisione arbitraria non modificabili. (Ereditato da Object) |
Ten |
Valore 10, con una scala pari a 0. |
ThresholdClass |
Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice. |
ThresholdType |
Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice. |
Zero |
Valore 0, con una scala pari a 0. |
Metodi
Abs() |
Restituisce un oggetto |
Abs(MathContext) |
Restituisce un oggetto |
Add(BigDecimal) |
Restituisce un oggetto |
Add(BigDecimal, MathContext) |
Restituisce un oggetto |
ByteValue() |
Restituisce il valore del numero specificato come . |
ByteValueExact() |
Converte l'oggetto |
Clone() |
Crea e restituisce una copia di questo oggetto. (Ereditato da Object) |
CompareTo(BigDecimal) |
Confronta questo |
Dispose() |
Numeri decimali con precisione arbitraria non modificabili. (Ereditato da Object) |
Dispose(Boolean) |
Numeri decimali con precisione arbitraria non modificabili. (Ereditato da Object) |
Divide(BigDecimal) |
Restituisce un oggetto |
Divide(BigDecimal, Int32, RoundingMode) |
Restituisce un oggetto |
Divide(BigDecimal, Int32, RoundOptions) |
Restituisce un oggetto |
Divide(BigDecimal, MathContext) |
Restituisce un oggetto |
Divide(BigDecimal, RoundingMode) |
Restituisce un oggetto |
Divide(BigDecimal, RoundOptions) |
Restituisce un oggetto |
DivideAndRemainder(BigDecimal) |
Restituisce una matrice a due elementi |
DivideAndRemainder(BigDecimal, MathContext) |
Restituisce una matrice a due elementi |
DivideToIntegralValue(BigDecimal) |
Restituisce un oggetto |
DivideToIntegralValue(BigDecimal, MathContext) |
Restituisce un oggetto |
DoubleValue() |
Converte questo oggetto |
Equals(Object) |
Indica se un altro oggetto è "uguale a" questo. (Ereditato da Object) |
FloatValue() |
Converte questo oggetto |
GetHashCode() |
Restituisce un valore del codice hash per l'oggetto. (Ereditato da Object) |
IntValue() |
Converte l'oggetto |
IntValueExact() |
Converte l'oggetto |
JavaFinalize() |
Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto . (Ereditato da Object) |
LongValue() |
Converte questo oggetto |
LongValueExact() |
Converte l'oggetto |
Max(BigDecimal) |
Restituisce il valore massimo di questo |
Min(BigDecimal) |
Restituisce il valore minimo di questo |
MovePointLeft(Int32) |
Restituisce un |
MovePointRight(Int32) |
Restituisce un |
Multiply(BigDecimal) |
Restituisce un oggetto |
Multiply(BigDecimal, MathContext) |
Restituisce un oggetto |
Negate() |
Restituisce un oggetto |
Negate(MathContext) |
Restituisce un oggetto |
Notify() |
Riattiva un singolo thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
NotifyAll() |
Riattiva tutti i thread in attesa del monitoraggio di questo oggetto. (Ereditato da Object) |
Plus() |
Restituisce un oggetto |
Plus(MathContext) |
Restituisce un oggetto |
Pow(Int32) |
Restituisce un oggetto il |
Pow(Int32, MathContext) |
Restituisce un oggetto il |
Precision() |
Restituisce la precisione dell'oggetto |
Remainder(BigDecimal) |
Restituisce un oggetto il |
Remainder(BigDecimal, MathContext) |
Restituisce un oggetto |
Round(MathContext) |
Restituisce un arrotondato |
Scale() |
Restituisce la scala dell'oggetto |
ScaleByPowerOfTen(Int32) |
Restituisce un valore BigDecimal il cui valore numerico è uguale a ( |
SetHandle(IntPtr, JniHandleOwnership) |
Imposta la proprietà Handle. (Ereditato da Object) |
SetScale(Int32) |
Restituisce un oggetto |
SetScale(Int32, RoundingMode) |
Restituisce un oggetto |
SetScale(Int32, RoundOptions) |
Restituisce un oggetto |
ShortValue() |
Restituisce il valore del numero specificato come . |
ShortValueExact() |
Converte l'oggetto |
Signum() |
Restituisce la funzione signum di questo |
Sqrt(MathContext) |
Restituisce un'approssimazione alla radice quadrata di |
StripTrailingZeros() |
Restituisce un oggetto |
Subtract(BigDecimal) |
Restituisce un oggetto |
Subtract(BigDecimal, MathContext) |
Restituisce un oggetto |
ToArray<T>() |
Numeri decimali con precisione arbitraria non modificabili. (Ereditato da Object) |
ToBigInteger() |
Converte questo oggetto |
ToBigIntegerExact() |
Converte questo oggetto |
ToEngineeringString() |
Restituisce una rappresentazione stringa di questo |
ToPlainString() |
Restituisce una rappresentazione stringa di questo |
ToString() |
Restituisce una rappresentazione in formato stringa dell'oggetto. (Ereditato da Object) |
Ulp() |
Restituisce le dimensioni di un ulp, un'unità nell'ultima posizione, di questo |
UnregisterFromRuntime() |
Numeri decimali con precisione arbitraria non modificabili. (Ereditato da Object) |
UnscaledValue() |
Restituisce un |
ValueOf(Double) |
Converte un oggetto |
ValueOf(Int64) |
Converte un |
ValueOf(Int64, Int32) |
Converte un |
Wait() |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una>notifica</em> o <em>interrotto</em>. (Ereditato da Object) |
Wait(Int64) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una notifica</>em> o <em>interrotto</em> o fino a quando non è trascorsa una certa quantità di tempo reale. (Ereditato da Object) |
Wait(Int64, Int32) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere eseguendo <una notifica</>em> o <em>interrotto</em> o fino a quando non è trascorsa una certa quantità di tempo reale. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
IComparable.CompareTo(Object) |
Numeri decimali con precisione arbitraria non modificabili. |
IJavaPeerable.Disposed() |
Numeri decimali con precisione arbitraria non modificabili. (Ereditato da Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Numeri decimali con precisione arbitraria non modificabili. (Ereditato da Object) |
IJavaPeerable.Finalized() |
Numeri decimali con precisione arbitraria non modificabili. (Ereditato da Object) |
IJavaPeerable.JniManagedPeerState |
Numeri decimali con precisione arbitraria non modificabili. (Ereditato da Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Numeri decimali con precisione arbitraria non modificabili. (Ereditato da Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Numeri decimali con precisione arbitraria non modificabili. (Ereditato da Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Numeri decimali con precisione arbitraria non modificabili. (Ereditato da Object) |
Metodi di estensione
JavaCast<TResult>(IJavaObject) |
Esegue una conversione del tipo verificato dal runtime Android. |
JavaCast<TResult>(IJavaObject) |
Numeri decimali con precisione arbitraria non modificabili. |
GetJniTypeName(IJavaPeerable) |
Numeri decimali con precisione arbitraria non modificabili. |