Come convertire BigDecimal in Double in Java?


112

Come ci convertiamo BigDecimalin DoubleJava? Ho un requisito in cui dobbiamo usare Double come argomento ma stiamo ottenendo BigDecimalquindi devo convertire BigDecimalin Double.


10
Che ne dicinew BigDecimal(2).doubleValue()
Matthias

6
Leggere sempre la documentazione prima di porre una domanda. Troverai spesso una risposta alla tua domanda. Vedi doubleValue(). (Suggerimento: per trovare la documentazione per una classe specifica, è sufficiente cercare su google il nome della classe, seguito da java. Ad esempio, per trovare questa documentazione, ho cercato "BigDecimal Java")
Justin

1
"Ho un requisito in cui dobbiamo utilizzare Double come argomento" Ottieni il requisito modificato. Non ha senso usarlo BigDecimala meno che non lo usi end-to-end. Questo requisito compromette l'accuratezza; può compromettere la conformità normativa; e può costituire negligenza perseguibile.
Marchese di Lorne

Perché stai usando Doublee no double. È un campo che può essere null?
Peter Lawrey

L'utilizzo di @EJP doublenon è poi così male, ma poiché ha oltre 15 cifre di accuratezza della rappresentazione che è superiore a quella necessaria alla maggior parte dei programmi, ma sono d'accordo che non ha senso usare BigDecimal alcune volte poiché è più probabile che tu aggiunga bug / complessità.
Peter Lawrey

Risposte:


225

È necessario utilizzare il doubleValue()metodo per ottenere il valore double da un oggetto BigDecimal.

BigDecimal bd; // the value you get
double d = bd.doubleValue(); // The double you want

Ciao, ho usato lo stesso, ma il problema è che entrambi gli anser sono diversi il mio output decimale era 13555261857.79 e quando convertito in doppio è 1.355526185779E10 .. Come ottengo lo stesso output dopo aver convertito il decimale in doppio
user13926345

@ user13926345 - Entrambi hanno gli stessi valori. Solo che il primo output è la normale rappresentazione del valore e l'altro è la rappresentazione scientifica .
SudoRahul

35

È possibile convertire BigDecimala doubleutilizzare .doubleValue(). Ma credimi, non usarlo se hai manipolazioni valutarie. Dovrebbe essere sempre eseguito BigDecimaldirettamente sugli oggetti. La perdita di precisione in questi calcoli è un grosso problema nei calcoli relativi alla valuta.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.