Comment convertir BigDecimal en Double en Java?

112

Comment nous convertissons BigDecimalen Doublejava? J'ai une exigence où nous devons utiliser Double comme argument, mais nous devenons BigDecimaldonc je dois convertir BigDecimalen Double.

Subodh Joshi
la source
10
Que diriez-vousnew BigDecimal(2).doubleValue()
Matthias
6
Lisez toujours la documentation avant de poser une question. Vous constaterez souvent que votre question est répondue. Voir doubleValue(). (Astuce: pour trouver la documentation d'une classe spécifique, recherchez simplement sur Google le nom de la classe, suivi de java. Par exemple, pour trouver cette documentation, j'ai recherché "BigDecimal Java")
Justin
1
"J'ai une exigence où nous devons utiliser Double comme argument" Faites modifier l'exigence. Il ne BigDecimalsert à rien de l'utiliser à moins que vous ne l' utilisiez de bout en bout. Cette exigence compromet la précision; peut compromettre la conformité réglementaire; et peut constituer une négligence pouvant donner lieu à une action.
Marquis de Lorne
Pourquoi utilisez-vous Doubleet non double. Est-ce un champ qui peut l'être null?
Peter Lawrey
@EJP Utiliser doublen'est pas si mal, mais comme il a plus de 15 chiffres de précision de représentation, ce qui est plus que ce dont la plupart des programmes ont besoin, mais je conviens qu'il ne sert à rien d'utiliser BigDecimal de temps en temps car vous êtes plus susceptible d'ajouter des bogues / complexité.
Peter Lawrey

Réponses:

227

Vous devez utiliser la doubleValue()méthode pour obtenir la valeur double d'un objet BigDecimal.

BigDecimal bd; // the value you get
double d = bd.doubleValue(); // The double you want
SudoRahul
la source
Salut, j'ai utilisé la même chose, mais le problème est que les deux anser sont différents, ma sortie décimale était 13555261857.79 et une fois convertie pour doubler son 1.355526185779E10 .. Comment obtenir la même sortie après la conversion décimale en double
user13926345
@ user13926345 - Les deux sont les mêmes valeurs. Juste que le premier résultat est la représentation normale de la valeur et l'autre est la représentation scientifique .
SudoRahul
35

Vous pouvez convertir BigDecimalen doubleutilisant .doubleValue(). Mais croyez-moi, ne l'utilisez pas si vous avez des manipulations de devises. Elle doit toujours être effectuée BigDecimaldirectement sur les objets. La perte de précision dans ces calculs pose de gros problèmes de temps dans les calculs liés aux devises.

HIREN011
la source
10

Utilisez la méthode doubleValue présente dans la classe BigDecimal :

double doubleValue()

Convertit ceci BigDecimalen un fichier double.

Juned Ahsan
la source