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.
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 getdouble d = bd.doubleValue();// The double you want
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.
new BigDecimal(2).doubleValue()
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".)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.Double
und nichtdouble
? Ist es ein Feld, das sein kannnull
?double
ist 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.Antworten:
Sie müssen die
doubleValue()
Methode verwenden, um den doppelten Wert von einem BigDecimal-Objekt abzurufen.quelle
Sie können
BigDecimal
indouble
using konvertieren.doubleValue()
. Aber glauben Sie mir, verwenden Sie es nicht, wenn Sie Währungsmanipulationen haben. Es sollte immer direkt anBigDecimal
Objekten durchgeführt werden. Präzisionsverluste bei diesen Berechnungen sind große Zeitprobleme bei währungsbezogenen Berechnungen.quelle
Verwenden Sie die in der BigDecimal- Klasse vorhandene doubleValue- Methode :
Konvertiert dies
BigDecimal
in adouble
.quelle