Wie konvertiere ich BigDecimal in Java in Double?

110

Wie wir konvertieren BigDecimalin Doublein Java? Ich habe eine Verpflichtung , wo wir doppelt als Argument verwenden, aber wir bekommen , BigDecimalso dass ich konvertieren müssen BigDecimalin Double.

Subodh Joshi
quelle
10
Wie wäre esnew BigDecimal(2).doubleValue()
Matthias
6
Lesen Sie immer die Dokumentation, bevor Sie eine Frage stellen. Sie werden oft feststellen, dass Ihre Frage beantwortet wird. Siehe doubleValue(). (Hinweis: Um die Dokumentation für eine bestimmte Klasse zu finden, suchen Sie einfach bei Google nach dem Klassennamen, gefolgt von Java. Um diese Dokumentation zu finden, suchte ich beispielsweise nach "BigDecimal Java".)
Justin
1
"Ich habe eine Anforderung, bei der wir Double als Argument verwenden müssen." Ändern Sie die Anforderung. Es macht keinen Sinn, es BigDecimalüberhaupt zu verwenden, es sei denn, Sie verwenden es Ende-zu-Ende. Diese Anforderung beeinträchtigt die Genauigkeit. kann die Einhaltung gesetzlicher Vorschriften beeinträchtigen; und kann eine fahrlässige Fahrlässigkeit darstellen.
Marquis von Lorne
Warum benutzt du Doubleund nicht double? Ist es ein Feld, das sein kann null?
Peter Lawrey
@EJP Verwenden doubleist nicht so schlecht, aber da es mehr als 15 Stellen Repräsentationsgenauigkeit hat, ist dies mehr als die meisten Programme benötigen, aber ich stimme zu, dass es manchmal keinen Sinn macht, BigDecimal zu verwenden, da Sie mit größerer Wahrscheinlichkeit Fehler / Komplexität hinzufügen.
Peter Lawrey

Antworten:

223

Sie müssen die doubleValue()Methode verwenden, um den doppelten Wert von einem BigDecimal-Objekt abzurufen.

BigDecimal bd; // the value you get
double d = bd.doubleValue(); // The double you want
SudoRahul
quelle
Hallo, ich habe das gleiche verwendet, aber das Problem ist, dass beide anser unterschiedlich sind. Meine Dezimalausgabe war 13555261857.79 und bei Konvertierung in das Doppelte die 1.355526185779E10. Wie erhalte ich die gleiche Ausgabe nach der Konvertierung der Dezimalzahl in das Doppelte
user13926345
@ user13926345 - Beide sind die gleichen Werte. Nur dass die erste Ausgabe die normale Darstellung des Wertes und die andere die wissenschaftliche Darstellung ist .
SudoRahul
34

Sie können BigDecimalin doubleusing konvertieren .doubleValue(). Aber glauben Sie mir, verwenden Sie es nicht, wenn Sie Währungsmanipulationen haben. Es sollte immer direkt an BigDecimalObjekten durchgeführt werden. Präzisionsverluste bei diesen Berechnungen sind große Zeitprobleme bei währungsbezogenen Berechnungen.

HIREN011
quelle
9

Verwenden Sie die in der BigDecimal- Klasse vorhandene doubleValue- Methode :

double doubleValue()

Konvertiert dies BigDecimalin a double.

Juned Ahsan
quelle