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!