¿Cómo convertir BigDecimal a Double en Java?

112

¿Cómo convertimos BigDecimalen Doubleen Java? Tengo un requisito en el que tenemos que usar Double como argumento, pero lo estamos obteniendo, BigDecimalasí que tengo que convertirlo BigDecimalen Double.

Subodh Joshi
fuente
10
Qué talnew BigDecimal(2).doubleValue()
Matthias
6
Lea siempre la documentación antes de hacer una pregunta. A menudo encontrará que su pregunta ha sido respondida. Ver doubleValue(). (Sugerencia: para encontrar la documentación de una clase específica, simplemente busque en Google el nombre de la clase, seguido de java. Por ejemplo, para encontrar esta documentación, busqué "BigDecimal Java")
Justin
1
"Tengo un requisito en el que tenemos que usar Double como argumento" Cambie el requisito. No tiene sentido usarlo BigDecimala menos que lo use de un extremo a otro. Este requisito compromete la precisión; puede comprometer el cumplimiento normativo; y puede constituir negligencia procesable.
Marqués de Lorne
¿Por qué estás usando Doubley no double? ¿Es un campo que puede ser null?
Peter Lawrey
@EJP El uso doubleno es tan malo, pero como tiene más de 15 dígitos de precisión de representación, que es más de lo que la mayoría de los programas necesitan, pero estoy de acuerdo en que no tiene sentido usar BigDecimal algunas veces, ya que es más probable que agregue errores / complejidad.
Peter Lawrey

Respuestas:

225

doubleValue()Debe utilizar el método para obtener el valor doble de un objeto BigDecimal.

BigDecimal bd; // the value you get
double d = bd.doubleValue(); // The double you want
SudoRahul
fuente
Hola, utilicé el mismo, pero el problema es que ambos anser son diferentes, mi salida decimal fue 13555261857.79 y cuando se convirtió al doble de su 1.355526185779E10 .. ¿Cómo obtengo el mismo resultado después de convertir decimal a doble
Usuario13926345
@ user13926345: ambos son los mismos valores. Solo que la primera salida es la representación normal del valor y la otra es la representación científica .
SudoRahul
35

Puede convertir BigDecimala doubleusing .doubleValue(). Pero créame, no lo use si tiene manipulaciones monetarias. Siempre debe realizarse en BigDecimalobjetos directamente. La pérdida de precisión en estos cálculos es un gran problema en los cálculos relacionados con la moneda.

HIREN011
fuente
10

Utilice el método doubleValue presente en la clase BigDecimal :

double doubleValue()

Convierte esto BigDecimala double.

Juned Ahsan
fuente