Gibt es einen Datentyp in Java, der eine Dezimalzahl genauer speichert als eine double
?
Antworten
Zu viele Anzeigen?Ja, verwenden Sie java.math.BigDecimal Klasse. Sie kann Zahlen mit großer Präzision darstellen.
Wenn Sie nur große Ganzzahlen benötigen, können Sie java.math.BigInteger stattdessen.
Sie erweitern beide java.math.Number .
Bei Bedarf können Sie sogar Ihre vorhandenen Doppelgänger verwenden:
double d = 67.67;
BigDecimal bd = new BigDecimal(d);
Und Sie können BigDecimal-Werte aus Datenbanken mit JDBC abrufen:
ResultSet rs = st.executeQuery();
while(rs.next()) {
BigDecimal bd = rs.getBigDecimal("column_with_number");
}
Da Java keine Überladung von Operatoren unterstützt, können Sie leider keine regulären Symbole für gängige mathematische Operationen verwenden, wie Sie es in C# und der decimal
Typ.
Sie müssen einen Code wie diesen schreiben:
BigDecimal d1 = new BigDecimal(67.67);
BigDecimal d2 = new BigDecimal(67.68);
BidDecimal d3 = d1.add(d2); // d1 + d2 is invalid
Ja, Sie können eine beliebige Präzisionsklasse verwenden, z. B. BigDecimal .
Können Sie eine BigDecimal
Für die Berechnung mit BigDeciamls bietet diese Klasse spezielle Methoden, die anstelle der Standardoperatoren verwendet werden, z. B. + - * / ...
dass Sie von int, double und so weiter...
- See previous answers
- Weitere Antworten anzeigen