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 RoundingModeenumTyps (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 MathContextEinstellung '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 BigDecimalVorgangs 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 BigDecimali des Hinzugefügten der BigDecimaljZeichenfolge" entspricht. Der Pseudocodeausdruck (i == j) ist kurz für "true if and only if the BigDecimali represents the same value as the BigDecimalj." 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. |