15 Stimmen

präziserer numerischer Datentyp als double?

Gibt es einen Datentyp in Java, der eine Dezimalzahl genauer speichert als eine double ?

24voto

Pablo Santa Cruz Punkte 169147

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

3voto

Olivier Grégoire Punkte 30896

Ja: die Klasse java.math.BigDecimal.

2voto

a_horse_with_no_name Punkte 489934

Verwenden Sie BigDecimal, es bietet eine viel bessere Präzision

2voto

Greg Hewgill Punkte 882617

Ja, Sie können eine beliebige Präzisionsklasse verwenden, z. B. BigDecimal .

2voto

bw_üezi Punkte 4381

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...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X