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 segno arbitrario e precisione non modificabile.
[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 segno arbitrario e precisione non modificabile. Un BigDecimal
oggetto è costituito da un numero intero di precisione arbitrario #unscaledValue() senza scalabilità e da una scala di #scale() integer a 32 bit. Se zero o positivo, la scala è il numero di cifre a destra del separatore decimale. Se negativo, il valore non ridimensionato del numero viene moltiplicato per dieci alla potenza della negazione della scala. Il valore del numero rappresentato da 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 oggetto BigDecimal
.
La BigDecimal
classe fornisce all'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 generata un'eccezione ArithmeticException
. In caso contrario, i calcoli possono essere eseguiti in una modalità di precisione e arrotondamento scelti 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 #ROUND_HALF_UP
) per rappresentare la modalità di arrotondamento è deprecato. I valori di enumerazione di RoundingMode
enum
, ad esempio RoundingMode#HALF_UP
, devono essere invece usati.
Quando un MathContext
oggetto viene fornito con un'impostazione di precisione pari a 0 (ad esempio, MathContext#UNLIMITED
), le operazioni aritmetiche sono esatte, come sono i metodi aritmetici che non accettano alcun MathContext
oggetto. Come un coro di calcolo del risultato esatto, l'impostazione della modalità di arrotondamento di un MathContext
oggetto con un'impostazione di precisione pari a 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 deterministica e l'operazione viene specificata per restituire un risultato esatto, viene generata un'eccezione ArithmeticException
. In caso contrario, viene restituito il risultato esatto della divisione, come fatto per altre operazioni.
Quando l'impostazione di precisione non è 0, le regole dell'aritmetica BigDecimal
sono ampiamente compatibili con le modalità selezionate di funzionamento dell'aritmetica 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) di BigDecimal
considera i membri della stessa coorte uguali l'uno all'altro. Al contrario, il #equals(Object) equals
metodo richiede che il valore numerico e la rappresentazione siano uguali per mantenere l'uguaglianza. I risultati dei metodi come #scale()
e #unscaledValue()
differiscono per valori numericamente uguali con rappresentazioni diverse.
In generale, le modalità di arrotondamento e l'impostazione della precisione determinano il modo in cui le operazioni restituiscono risultati con un numero limitato di cifre quando il risultato esatto ha più cifre (forse infinitamente molte nel caso della divisione e della radice quadrata) rispetto al numero di cifre restituite.
In primo luogo, il numero totale di cifre da restituire viene specificato dall'impostazione MathContext
dell'oggetto precision
. Ciò determina la precisione del risultato. Il conteggio delle cifre inizia dalla cifra diversa da zero più a sinistra del risultato esatto. La modalità di arrotondamento determina il modo in cui le cifre finali scartate 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), utilizzando la modalità di arrotondamento selezionata. Se il risultato esatto non viene restituito, alcune posizioni cifre del risultato esatto vengono eliminate. Quando l'arrotondamento aumenta la grandezza del risultato restituito, è possibile che una nuova posizione di cifra venga creata da una propagazione a una cifra iniziale "9". Ad esempio, arrotondare il valore da 999,9 a tre cifre arrotondando l'arrotondamento sarebbe numericamente uguale a 100&volte, rappresentato come 100&volte; 10<sup>1</sup>. In questi casi, il nuovo "1" è la posizione della cifra iniziale 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 un'eccezione ArithmeticException
.
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">Caption Preferred Scales for Results of Arithmetic Operations </caption><thead><tr><th scope="col">Operation</th 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>rootand.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, perché il risultato esatto potrebbe avere più cifre. Ad esempio, 1/32
è 0.03125
.
Prima dell'arrotondamento, la scala del risultato intermedio esatto 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 al massimo precision
le 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 zeri finali e riducendo la scala. Ad esempio, arrotondando a tre cifre usando la modalità arrotondamento rounding rounding#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, sottrarre e moltiplicare, la riduzione della scala sarà uguale al numero di posizioni di cifre del risultato esatto che vengono scartate. Se l'arrotondamento fa sì che una propagazione del trasporto crei una nuova posizione di cifre di ordine elevato, viene eliminata una cifra aggiuntiva del risultato rispetto a quando non viene creata una nuova posizione della cifra.
Altri metodi possono avere una semantica di arrotondamento leggermente diversa. Ad esempio, il risultato del pow
metodo che usa l'algoritmo specificato #pow(int, MathContext) può occasionalmente differire dal risultato matematico arrotondato per più di un'unità nell'ultima posizione, una #ulp() ulp.
Vengono forniti due tipi di operazioni per la modifica della scala di un oggetto BigDecimal
: operazioni di ridimensionamento/arrotondamento e operazioni di movimento decimale. Le operazioni di ridimensionamento/arrotondamento (#setScale setScale
e #round round
) restituiscono un BigDecimal
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 separatore decimale di 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 supererebbe l'intervallo di un intero a 32 bit, tramite overflow o underflow, l'operazione potrebbe generare un'eccezione ArithmeticException
.
Per motivi di brevità e chiarezza, lo pseudo-codice viene usato in tutte le descrizioni dei BigDecimal
metodi. L'espressione (i + j)
pseudo-codice è abbreviata per "un BigDecimal
il cui valore è quello dell'oggetto BigDecimal
i
aggiunto a quello di BigDecimal
j
". L'espressione (i == j)
pseudo-codice è abbreviata per "true
se e solo se BigDecimal
i
rappresenta lo stesso valore di BigDecimal
j
". Altre espressioni pseudo-codice vengono interpretate in modo analogo. Le parentesi quadre vengono usate per rappresentare la coppia di scala e specifica BigInteger
che definisce un BigDecimal
valore, ad esempio [19, 2] è numericamente BigDecimal
uguale a 0,19 con una scala pari a 2.
Tutti i metodi e i costruttori per questa classe generano un'eccezione NullPointerException
quando viene passato un null
riferimento all'oggetto per qualsiasi parametro di input.
Aggiunta nella versione 1.1.
Documentazione java per java.math.BigDecimal
.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.
Costruttori
BigDecimal(BigInteger) |
Converte un oggetto |
BigDecimal(BigInteger, Int32) |
Converte un |
BigDecimal(BigInteger, Int32, MathContext) |
Converte un |
BigDecimal(BigInteger, MathContext) |
Converte un oggetto |
BigDecimal(Char[]) |
Converte una rappresentazione di matrice di caratteri di un oggetto in 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 oggetto |
BigDecimal(Double, MathContext) |
Converte un oggetto |
BigDecimal(Int32) |
Converte un oggetto |
BigDecimal(Int32, MathContext) |
Converte un oggetto |
BigDecimal(Int64) |
Converte un oggetto |
BigDecimal(Int64, MathContext) |
Converte un oggetto |
BigDecimal(IntPtr, JniHandleOwnership) |
Costruttore usato durante la creazione di rappresentazioni gestite di oggetti JNI; chiamato dal runtime. |
BigDecimal(String) |
Converte la rappresentazione di stringa di un oggetto |
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 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 verso il "vicino più vicino" a meno che entrambi i vicini non siano equidistenti, nel qual caso, arrotondare verso il vicino pari. |
RoundHalfUp |
Modalità di arrotondamento verso il "vicino più vicino" a meno che entrambi i vicini non siano equidisti, nel qual caso arrotondano. |
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 segno arbitrario e precisione non modificabile. (Ereditato da Object) |
JniPeerMembers |
Numeri decimali con segno arbitrario e precisione non modificabile. |
One |
Valore 1, con una scala pari a 0. |
PeerReference |
Numeri decimali con segno arbitrario e precisione non modificabile. (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 scala pari a 0. |
Metodi
Abs() |
Restituisce un |
Abs(MathContext) |
Restituisce un |
Add(BigDecimal) |
Restituisce un |
Add(BigDecimal, MathContext) |
Restituisce un |
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 segno arbitrario e precisione non modificabile. (Ereditato da Object) |
Dispose(Boolean) |
Numeri decimali con segno arbitrario e precisione non modificabile. (Ereditato da Object) |
Divide(BigDecimal) |
Restituisce un |
Divide(BigDecimal, Int32, RoundingMode) |
Restituisce un |
Divide(BigDecimal, Int32, RoundOptions) |
Restituisce un |
Divide(BigDecimal, MathContext) |
Restituisce un |
Divide(BigDecimal, RoundingMode) |
Restituisce un |
Divide(BigDecimal, RoundOptions) |
Restituisce un |
DivideAndRemainder(BigDecimal) |
Restituisce una matrice a due elementi |
DivideAndRemainder(BigDecimal, MathContext) |
Restituisce una matrice a due elementi |
DivideToIntegralValue(BigDecimal) |
Restituisce un |
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 valore |
MovePointRight(Int32) |
Restituisce un valore |
Multiply(BigDecimal) |
Restituisce un |
Multiply(BigDecimal, MathContext) |
Restituisce un |
Negate() |
Restituisce un |
Negate(MathContext) |
Restituisce un |
Notify() |
Riattiva un singolo thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
NotifyAll() |
Riattiva tutti i thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
Plus() |
Restituisce un |
Plus(MathContext) |
Restituisce un |
Pow(Int32) |
Restituisce un oggetto |
Pow(Int32, MathContext) |
Restituisce un oggetto il |
Precision() |
Restituisce la precisione dell'oggetto . |
Remainder(BigDecimal) |
Restituisce un oggetto il |
Remainder(BigDecimal, MathContext) |
Restituisce un |
Round(MathContext) |
Restituisce un |
Scale() |
Restituisce la scala di questo |
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 |
SetScale(Int32, RoundingMode) |
Restituisce un |
SetScale(Int32, RoundOptions) |
Restituisce un |
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 |
Subtract(BigDecimal, MathContext) |
Restituisce un |
ToArray<T>() |
Numeri decimali con segno arbitrario e precisione non modificabile. (Ereditato da Object) |
ToBigInteger() |
Converte questo oggetto |
ToBigIntegerExact() |
Converte l'oggetto |
ToEngineeringString() |
Restituisce una rappresentazione di stringa di questo |
ToPlainString() |
Restituisce una rappresentazione di stringa di questo |
ToString() |
Restituisce una rappresentazione di stringa dell'oggetto. (Ereditato da Object) |
Ulp() |
Restituisce le dimensioni di un ulp, un'unità nell'ultima posizione, di questo |
UnregisterFromRuntime() |
Numeri decimali con segno arbitrario e precisione non modificabile. (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 ricevendo <>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 ricevendo>< una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale. (Ereditato da Object) |
Wait(Int64, Int32) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo>< una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
IComparable.CompareTo(Object) |
Numeri decimali con segno arbitrario e precisione non modificabile. |
IJavaPeerable.Disposed() |
Numeri decimali con segno arbitrario e precisione non modificabile. (Ereditato da Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Numeri decimali con segno arbitrario e precisione non modificabile. (Ereditato da Object) |
IJavaPeerable.Finalized() |
Numeri decimali con segno arbitrario e precisione non modificabile. (Ereditato da Object) |
IJavaPeerable.JniManagedPeerState |
Numeri decimali con segno arbitrario e precisione non modificabile. (Ereditato da Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Numeri decimali con segno arbitrario e precisione non modificabile. (Ereditato da Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Numeri decimali con segno arbitrario e precisione non modificabile. (Ereditato da Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Numeri decimali con segno arbitrario e precisione non modificabile. (Ereditato da Object) |
Metodi di estensione
JavaCast<TResult>(IJavaObject) |
Esegue una conversione del tipo di tipo controllato dal runtime Android. |
JavaCast<TResult>(IJavaObject) |
Numeri decimali con segno arbitrario e precisione non modificabile. |
GetJniTypeName(IJavaPeerable) |
Numeri decimali con segno arbitrario e precisione non modificabile. |