BigDecimal Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen.
[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
- Vererbung
- Attribute
- Implementiert
Hinweise
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. A BigDecimal
besteht aus einer beliebigen Genauigkeit ganze Zahl #unscaledValue() nicht skalierten Werts und einer 32-Bit-Ganzzahl #scale() Skalierung. Wenn null oder positiv, ist die Skalierung die Anzahl der Ziffern rechts neben dem Dezimalkomma. Wenn negativ, wird der nicht skalierte Wert der Zahl mit zehn bis zur Potenz der Negation der Skalierung multipliziert. Der Wert der zahl, die durch die BigDecimal
Zahl dargestellt wird, ist daher (unscaledValue × 10<sup>-scale</sup>)
.
Die BigDecimal
Klasse stellt Vorgänge für arithmetische, Skalierungsmanipulation, Rundung, Vergleich, Hashing und Formatkonvertierung bereit. Die #toString
Methode stellt eine kanonische Darstellung eines .BigDecimal
Die BigDecimal
Klasse bietet dem Benutzer vollständige Kontrolle über das Rundungsverhalten. Wenn kein Rundungsmodus angegeben ist und das genaue Ergebnis nicht dargestellt werden kann, wird ein ArithmeticException
Ausgelöst. Andernfalls können Berechnungen an eine ausgewählte Genauigkeit und einen Rundungsmodus durchgeführt werden, indem ein entsprechendes MathContext
Objekt für den Vorgang bereitgestellt wird. In beiden Fällen werden acht <Em-Rundungsmodi</Em>> für die Steuerung der Rundung bereitgestellt. Die Verwendung der ganzzahligen Felder in dieser Klasse (z #ROUND_HALF_UP
. B. ) zur Darstellung des Rundungsmodus ist veraltet. Stattdessen sollten die Enumerationswerte des RoundingMode
enum
Typs (z RoundingMode#HALF_UP
. B. ) verwendet werden.
Wenn ein MathContext
Objekt mit einer Genauigkeitseinstellung von 0 bereitgestellt wird (z MathContext#UNLIMITED
. B. ), sind arithmetische Vorgänge genau, wie die arithmetischen Methoden, die kein MathContext
Objekt verwenden. Als Koroller des genauen Ergebnisses wird die Einstellung des Rundungsmodus eines MathContext
Objekts mit einer Genauigkeitseinstellung von 0 nicht verwendet und somit irrelevant. Im Falle der Trennung könnte der genaue Quotient eine unendlich lange Dezimalerweiterung haben; Beispiel: 1 dividiert durch 3. Wenn der Quotient eine nicht bestimmte Dezimalerweiterung aufweist und der Vorgang angegeben wird, um ein genaues Ergebnis zurückzugeben, wird ein ArithmeticException
Fehler ausgelöst. Andernfalls wird das genaue Ergebnis der Division wie bei anderen Vorgängen zurückgegeben.
Wenn die Genauigkeitseinstellung nicht 0 ist, sind die Regeln der BigDecimal
Arithmetik allgemein kompatibel mit ausgewählten Betriebsmodi der arithmetischen, die in ANSI X3.274-1996 und ANSI X3.274-1996/AM 1-2000 (Abschnitt 7.4) definiert sind. Im Gegensatz zu diesen Standards BigDecimal
sind viele Rundungsmodi enthalten. Alle Konflikte zwischen diesen ANSI-Standards und der BigDecimal
Spezifikation werden zugunsten von BigDecimal
.
Da derselbe numerische Wert unterschiedliche Darstellungen (mit unterschiedlichen Skalierungen) aufweisen kann, müssen die Regeln der Arithmetik und Rundung sowohl das numerische Ergebnis als auch die Skalierung angeben, die in der Darstellung des Ergebnisses verwendet wird.
Die verschiedenen Darstellungen desselben numerischen Werts werden als Elemente derselben Kohorte bezeichnet. Die natürliche Reihenfolge der #compareTo(BigDecimal) BigDecimal
betrachtet Elemente derselben Kohorte, die gleicheinander sind. Im Gegensatz dazu muss für die Methode sowohl der #equals(Object) equals
numerische Wert als auch die Darstellung identisch sein, damit gleichheitsgerecht gehalten wird. Die Ergebnisse von Methoden wie #scale()
und #unscaledValue()
unterscheiden sich für numerisch gleiche Werte mit unterschiedlichen Darstellungen.
Im Allgemeinen bestimmen die Rundungsmodi und die Genauigkeitseinstellung, wie Vorgänge Ergebnisse mit einer begrenzten Anzahl von Ziffern zurückgeben, wenn das genaue Ergebnis mehr Ziffern enthält (möglicherweise unendlich viele im Fall von Division und Quadratwurzel), als die Anzahl der zurückgegebenen Ziffern.
Zunächst wird die Gesamtzahl der zurückzugebenden Ziffern durch die MathContext
Einstellung 'sprecision
' angegeben. Dadurch wird die Genauigkeit des Ergebnisses bestimmt. Die Anzahl der Ziffern beginnt mit der äußerst linken Nichtzero-Ziffer des exakten Ergebnisses. Der Rundungsmodus bestimmt, wie sich alle verworfenen nachgestellten Ziffern auf das zurückgegebene Ergebnis auswirken.
Bei allen arithmetischen Operatoren wird der Vorgang so ausgeführt, als ob zuerst ein genaues Zwischenergebnis berechnet und dann mithilfe des ausgewählten Rundungsmodus auf die Anzahl der Ziffern gerundet wird, die durch die Genauigkeitseinstellung (falls erforderlich) angegeben wurden. Wenn das genaue Ergebnis nicht zurückgegeben wird, werden einige Ziffernpositionen des exakten Ergebnisses verworfen. Wenn das Rundungsergebnis die Größe des zurückgegebenen Ergebnisses erhöht, ist es möglich, dass eine neue Ziffernposition durch eine Übertragung, die auf eine führende "9"-Ziffer verteilt wird, erstellt werden kann. Beispielsweise würde das Aufrunden des Werts 999,9 auf drei Ziffern numerisch gleich 100 und 100 Mal dargestellt werden; 10<sup>1</sup>. In solchen Fällen ist die neue "1" die führende Ziffer des zurückgegebenen Ergebnisses.
Bei Methoden und Konstruktoren mit einem MathContext
Parameter wird ein ArithmeticException
Auslösen ausgelöst, wenn das Ergebnis ungenau ist, der Rundungsmodus jedoch istRoundingMode#UNNECESSARY UNNECESSARY
.
Neben einem logischen genauen Ergebnis verfügt jede arithmetische Operation über eine bevorzugte Skalierung für die Darstellung eines Ergebnisses. Die bevorzugte Skalierung für jeden Vorgang wird in der folgenden Tabelle aufgeführt.
<table class="striped" style="text-align:left"><caption>Preferred Scales for Results of Arithmeetic 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">Multiplier.scale>><<() + multiplicand.scale()</td><tr><1 bereich="row">Divide</th><td>dividend.scale() - divisor.scale()</td<>tr><th scope="row">Square root</th><td>radicand.scale()/2</td<>/tbody></table>
Diese Skalierungen sind diejenigen, die von den Methoden verwendet werden, die genaue arithmetische Ergebnisse zurückgeben; mit der Ausnahme, dass eine genaue Trennlinie möglicherweise eine größere Skala verwenden muss, da das genaue Ergebnis möglicherweise mehr Ziffern enthält. 1/32
ist z. B. 0.03125
.
Vor dem Runden ist die Skalierung des logischen genauen Zwischenergebnisses die bevorzugte Skalierung für diesen Vorgang. Wenn das genaue numerische Ergebnis nicht in precision
Ziffern dargestellt werden kann, wählt das Runden den zu zurückgebenden Ziffernsatz aus, und die Skala des Ergebnisses wird von der Skalierung des Zwischenergebnisses auf die kleinste Skalierung reduziert, die die precision
tatsächlich zurückgegebenen Ziffern darstellen kann. Wenn das genaue Ergebnis mit den meisten precision
Ziffern dargestellt werden kann, wird die Darstellung des Ergebnisses mit der Skalierung zurückgegeben, die dem bevorzugten Maßstab am nächsten kommt. Insbesondere kann ein exakt darstellbarer Quotient in weniger als precision
Ziffern dargestellt werden, indem nachfolgende Nullen entfernt und die Skalierung verringert wird. Beispiel: Rundung auf drei Ziffern mithilfe des RoundingMode#FLOOR-Rundungsmodus, <br>
19/100 = 0.19 // integer=19, scale=2
<br>
aber<br>
21/110 = 0.190 // integer=190, scale=3
<br>
Beachten Sie, dass für addieren, subtrahieren und multiplizieren die Reduzierung der Skalierung die Anzahl der Ziffernpositionen des genauen Ergebnisses entspricht, das verworfen wird. Wenn die Rundung dazu führt, dass eine Übertragung eine neue Position mit hoher Reihenfolge erstellt, wird eine zusätzliche Ziffer des Ergebnisses verworfen, als wenn keine neue Ziffernposition erstellt wird.
Andere Methoden können leicht unterschiedliche Rundungsemantik aufweisen. Beispielsweise kann das Ergebnis der pow
Methode, die den angegebenen Algorithmus #pow(int, MathContext) verwendet, gelegentlich vom abgerundeten mathematischen Ergebnis von mehr als einer Einheit an der letzten Stelle unterscheiden, eine #ulp() ulp.
Es werden zwei Arten von Vorgängen zum Bearbeiten der Skalierung eines BigDecimal
Vorgangs bereitgestellt: Skalierungs-/Rundungsvorgänge und Dezimalkommabewegungsvorgänge. Skalierungs-/Rundungsvorgänge (#setScale setScale
und #round round
) geben einen BigDecimal
Wert zurück, dessen Wert ungefähr (oder genau) dem des Operanden entspricht, dessen Skalierung oder Genauigkeit jedoch der angegebene Wert ist; d. h. sie erhöhen oder verringern die Genauigkeit der gespeicherten Zahl mit minimaler Auswirkung auf den Wert. Dezimalkommabewegungsoperationen (#movePointLeft movePointLeft
und #movePointRight movePointRight
) geben eine BigDecimal
Erstellte aus dem Operanden zurück, indem sie den Dezimalkommapunkt in der angegebenen Richtung bewegt.
Als 32-Bit-Ganzzahl ist der Wertesatz für die Skalierung groß, aber begrenzt. Wenn die Skala eines Ergebnisses den Bereich einer 32-Bit-Ganzzahl überschreitet, entweder durch Überlauf oder Unterlauf, wird der Vorgang möglicherweise ausgelöst ArithmeticException
.
Aus Platzgründen und Klarheit wird Pseudocode in allen Beschreibungen der BigDecimal
Methoden verwendet. Der Pseudocodeausdruck (i + j)
ist kurz für "ein BigDecimal
Wert, dessen Wert dem BigDecimal
i
des Hinzugefügten der BigDecimal
j
Zeichenfolge" entspricht. Der Pseudocodeausdruck (i == j)
ist kurz für "true
if and only if the BigDecimal
i
represents the same value as the BigDecimal
j
." Andere Pseudocodeausdrücke werden ähnlich interpretiert. Eckige Klammern werden verwendet, um das bestimmte BigInteger
Und Skalierungspaar darzustellen, das einen BigDecimal
Wert definiert; z. B. [19, 2] ist die BigDecimal
numerisch gleich 0,19 mit einer Skalierung von 2.
Alle Methoden und Konstruktoren für diese Klasse werden ausgelöst NullPointerException
, wenn ein null
Objektverweis für jeden Eingabeparameter übergeben wird.
In 1.1 hinzugefügt.
Java-Dokumentation für java.math.BigDecimal
.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Konstruktoren
BigDecimal(BigInteger) |
Übersetzt ein |
BigDecimal(BigInteger, Int32) |
Übersetzt einen |
BigDecimal(BigInteger, Int32, MathContext) |
Übersetzt einen |
BigDecimal(BigInteger, MathContext) |
Übersetzt eine |
BigDecimal(Char[]) |
Übersetzt eine Zeichenarraydarstellung einer |
BigDecimal(Char[], Int32, Int32) |
Übersetzt eine Zeichenarraydarstellung einer |
BigDecimal(Char[], Int32, Int32, MathContext) |
Übersetzt eine Zeichenarraydarstellung einer |
BigDecimal(Char[], MathContext) |
Übersetzt eine Zeichenarraydarstellung einer |
BigDecimal(Double) |
Übersetzt eine |
BigDecimal(Double, MathContext) |
Übersetzt eine |
BigDecimal(Int32) |
Übersetzt eine |
BigDecimal(Int32, MathContext) |
Übersetzt eine |
BigDecimal(Int64) |
Übersetzt ein |
BigDecimal(Int64, MathContext) |
Übersetzt eine |
BigDecimal(IntPtr, JniHandleOwnership) |
Ein Konstruktor, der beim Erstellen verwalteter Darstellungen von JNI-Objekten verwendet wird; wird von der Laufzeit aufgerufen. |
BigDecimal(String) |
Übersetzt die Zeichenfolgendarstellung einer |
BigDecimal(String, MathContext) |
Übersetzt die Zeichenfolgendarstellung einer |
Felder
RoundCeiling |
Rundungsmodus, um auf positive Unendlichkeit zu runden. |
RoundDown |
Rundungsmodus, um auf Null zu runden. |
RoundFloor |
Rundungsmodus, um auf negative Unendlichkeit zu runden. |
RoundHalfDown |
Rundungsmodus, um auf "nächste Nachbar" zu runden, es sei denn, beide Nachbarn sind gleichkommaant, in diesem Fall runden sie ab. |
RoundHalfEven |
Rundungsmodus, der auf den "nächsten Nachbarn" hin gerundet werden soll, es sei denn, beide Nachbarn sind gleichmässig, in diesem Fall rundet man auf den geraden Nachbarn hin. |
RoundHalfUp |
Rundungsmodus, um auf "nächste Nachbar" zu runden, es sei denn, beide Nachbarn sind gleichkommaant, in diesem Fall aufrunden. |
RoundUnnecessary |
Rundungsmodus, um zu bestätigen, dass der angeforderte Vorgang ein genaues Ergebnis hat, daher ist keine Rundung erforderlich. |
RoundUp |
Rundungsmodus zum Abrunden von Null. |
Eigenschaften
Class |
Gibt die Laufzeitklasse dieses Werts |
Handle |
Das Handle für die zugrunde liegende Android-Instanz. (Geerbt von Object) |
JniIdentityHashCode |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. (Geerbt von Object) |
JniPeerMembers |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. |
One |
Der Wert 1 mit einer Skalierung von 0. |
PeerReference |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. (Geerbt von Object) |
Ten |
Der Wert 10 mit einer Skalierung von 0. |
ThresholdClass |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
ThresholdType |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
Zero |
Der Wert 0 mit einer Skalierung von 0. |
Methoden
Abs() |
Gibt einen |
Abs(MathContext) |
Gibt einen |
Add(BigDecimal) |
Gibt einen |
Add(BigDecimal, MathContext) |
Gibt einen |
ByteValue() |
Gibt den Wert der angegebenen Zahl als ein |
ByteValueExact() |
Wandelt dies |
Clone() |
Erstellt und gibt eine Kopie dieses Objekts zurück. (Geerbt von Object) |
CompareTo(BigDecimal) |
Vergleicht dies |
Dispose() |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. (Geerbt von Object) |
Dispose(Boolean) |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. (Geerbt von Object) |
Divide(BigDecimal) |
Gibt einen |
Divide(BigDecimal, Int32, RoundingMode) |
Gibt einen |
Divide(BigDecimal, Int32, RoundOptions) |
Gibt einen |
Divide(BigDecimal, MathContext) |
Gibt einen |
Divide(BigDecimal, RoundingMode) |
Gibt einen |
Divide(BigDecimal, RoundOptions) |
Gibt einen |
DivideAndRemainder(BigDecimal) |
Gibt ein Array mit zwei Elementen |
DivideAndRemainder(BigDecimal, MathContext) |
Gibt ein Array mit zwei Elementen |
DivideToIntegralValue(BigDecimal) |
Gibt einen |
DivideToIntegralValue(BigDecimal, MathContext) |
Gibt einen |
DoubleValue() |
Konvertiert diesen |
Equals(Object) |
Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist. (Geerbt von Object) |
FloatValue() |
Konvertiert diesen |
GetHashCode() |
Gibt einen Hashcodewert für das Objekt zurück. (Geerbt von Object) |
IntValue() |
Konvertiert dies |
IntValueExact() |
Wandelt dies |
JavaFinalize() |
Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind. (Geerbt von Object) |
LongValue() |
Konvertiert diesen |
LongValueExact() |
Wandelt dies |
Max(BigDecimal) |
Gibt das Maximum dieser |
Min(BigDecimal) |
Gibt das Minimum dieser |
MovePointLeft(Int32) |
Gibt einen |
MovePointRight(Int32) |
Gibt ein Äquivalent zu diesem Wert |
Multiply(BigDecimal) |
Gibt einen |
Multiply(BigDecimal, MathContext) |
Gibt einen |
Negate() |
Gibt einen |
Negate(MathContext) |
Gibt einen |
Notify() |
Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet. (Geerbt von Object) |
NotifyAll() |
Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten. (Geerbt von Object) |
Plus() |
Gibt einen |
Plus(MathContext) |
Gibt einen |
Pow(Int32) |
Gibt einen |
Pow(Int32, MathContext) |
Gibt einen |
Precision() |
Gibt die Genauigkeit dieses Werts |
Remainder(BigDecimal) |
Gibt einen |
Remainder(BigDecimal, MathContext) |
Gibt einen |
Round(MathContext) |
Gibt einen |
Scale() |
Gibt die Skalierung dieses Werts |
ScaleByPowerOfTen(Int32) |
Gibt einen BigDecimal-Wert zurück, dessen numerischer Wert gleich ( |
SetHandle(IntPtr, JniHandleOwnership) |
Legt die Handle-Eigenschaft fest. (Geerbt von Object) |
SetScale(Int32) |
Gibt einen |
SetScale(Int32, RoundingMode) |
Gibt einen |
SetScale(Int32, RoundOptions) |
Gibt einen |
ShortValue() |
Gibt den Wert der angegebenen Zahl als ein |
ShortValueExact() |
Wandelt dies |
Signum() |
Gibt die Signum-Funktion dieses Werts |
Sqrt(MathContext) |
Gibt eine Annäherung an die Quadratwurzel zurück, deren |
StripTrailingZeros() |
Gibt einen |
Subtract(BigDecimal) |
Gibt einen |
Subtract(BigDecimal, MathContext) |
Gibt einen |
ToArray<T>() |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. (Geerbt von Object) |
ToBigInteger() |
Konvertiert diesen |
ToBigIntegerExact() |
Wandelt dies |
ToEngineeringString() |
Gibt eine Zeichenfolgendarstellung dieses |
ToPlainString() |
Gibt eine Zeichenfolgendarstellung dieser |
ToString() |
Gibt eine Zeichenfolgendarstellung des Objekts zurück. (Geerbt von Object) |
Ulp() |
Gibt die Größe eines Ulp zurück, einer Einheit an der letzten Stelle dieses Werts |
UnregisterFromRuntime() |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. (Geerbt von Object) |
UnscaledValue() |
Gibt einen |
ValueOf(Double) |
Übersetzt eine |
ValueOf(Int64) |
Übersetzt einen |
ValueOf(Int64, Int32) |
Übersetzt einen |
Wait() |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em> oder <em>unterbrochen</em>.<>< (Geerbt von Object) |
Wait(Int64) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Wait(Int64, Int32) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
IComparable.CompareTo(Object) |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. |
IJavaPeerable.Disposed() |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. (Geerbt von Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. (Geerbt von Object) |
IJavaPeerable.Finalized() |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. (Geerbt von Object) |
IJavaPeerable.JniManagedPeerState |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. (Geerbt von Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. (Geerbt von Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. (Geerbt von Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. (Geerbt von Object) |
Erweiterungsmethoden
JavaCast<TResult>(IJavaObject) |
Führt eine android-laufzeitgecheckte Typkonvertierung aus. |
JavaCast<TResult>(IJavaObject) |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. |
GetJniTypeName(IJavaPeerable) |
Unveränderliche, beliebige Genauigkeit signierte Dezimalzahlen. |