Heim >Java >javaLernprogramm >Was ist BigDecimal? Erstellen Sie eine Instanz von BigDecimal

Was ist BigDecimal? Erstellen Sie eine Instanz von BigDecimal

零下一度
零下一度Original
2017-06-25 10:40:304141Durchsuche

Die Float- und Double-Typen sind hauptsächlich für wissenschaftliche Berechnungen und technische Berechnungen konzipiert. Sie führen binäre Gleitkommaoperationen durch und sind sorgfältig darauf ausgelegt, genauere Näherungsberechnungen über einen weiten Wertebereich zu ermöglichen. Sie liefern jedoch keine völlig genauen Ergebnisse und sollten nicht dort eingesetzt werden, wo genaue Ergebnisse erforderlich sind. Normalerweise erfordern kommerzielle Berechnungen häufig BigDecimal, um Werte mit hohen Genauigkeitsanforderungen zu berechnen. Zum Beispiel:

  0.07 + 0.020.58 - 0.421.005 * 10015.1 / 1000

Egal in welcher Umgebung, Sie müssen das konvertieren Code bis Nur binärer Maschinencode kann von der Maschine erkannt werden, die Genauigkeit bleibt jedoch erhalten, wenn Gleitkommazahlen berechnet werden. In diesem Fall ist BigDecimal erforderlich Berechnung.

1. BigDecimal erstellen

BigDecimal verfügt über einen Konstruktor, der eine Gleitkommazahl mit doppelter Genauigkeit als Parameter akzeptiert Bei der Berechnung geht dennoch die Genauigkeit verloren.

  =  BigDecimal(1.005=  BigDecimal(100=  BigDecimal("1.005"=  BigDecimal("100"100.49999999999998934185896359849721193313598632812500
100.500

Aber Sie können feststellen, dass Sie bei der Übergabe einer Zeichenfolge genaue Ergebnisse erhalten, und BigDecimal.valueOf(double val) kann auch genaue Ergebnisse erhalten. Sie können den Quellcode von BigDecimal.valueOf(double) sehen val) unten

public static BigDecimal valueOf(double val) {// Reminder: a zero double returns '0.0', so we cannot fastpath// to use the constant ZERO.  This might be important enough to// justify a factory approach, a cache, or a few private// constants, later.return new BigDecimal(Double.toString(val));
    }

Diese Methode konvertiert zunächst die Parameter in den String-Typ und ruft dann die Konstruktionsparameter auf, deren Parameter vom String-Typ sind. Wenn Sie also BigDecimal verwenden, versuchen Sie es Verwenden Sie new BigDecimal(String val) oder BigDecimal.valueof(double val), um genaue Ergebnisse sicherzustellen.

2. CompareTo

BigDecimal verwendet CompareTo(), um Größen zu vergleichen.

  0.05).compareTo(BigDecimal.valueOf(0.040.04).compareTo(BigDecimal.valueOf(0.040.03).compareTo(BigDecimal.valueOf(0.04

BigDecimal.compareTo(BigDecimal val)

When Gibt 1 zurück, wenn BigDecimal größer als val ist,

gibt -1 zurück, wenn BigDecimal kleiner als val ist,

gibt 0 zurück, wenn BigDecimal gleich val ist.

Das obige ist der detaillierte Inhalt vonWas ist BigDecimal? Erstellen Sie eine Instanz von BigDecimal. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn