Como converter BigDecimal para Double em Java?

112

Como podemos converter BigDecimalem Doubleem java? Eu tenho um requisito em que temos que usar Double como argumento, mas estamos conseguindo, BigDecimalentão eu tenho que converter BigDecimalpara Double.

Subodh Joshi
fonte
10
Que talnew BigDecimal(2).doubleValue()
Matthias
6
Sempre leia a documentação antes de fazer uma pergunta. Freqüentemente, você descobrirá que sua pergunta foi respondida. Veja doubleValue(). (Dica: para encontrar a documentação de uma classe específica, simplesmente pesquise no google o nome da classe, seguido por java. Por exemplo, para encontrar esta documentação, pesquisei "BigDecimal Java")
Justin
1
"Eu tenho um requisito em que temos que usar Double como argumento" Altere o requisito. Não há nenhum ponto em usar, BigDecimala menos que você use de ponta a ponta. Este requisito compromete a precisão; pode comprometer a conformidade regulatória; e pode constituir negligência acionável.
Marquês de Lorne
Por que você está usando Doublee não double. É um campo que pode ser null?
Peter Lawrey
@EJP Usar doublenão é tão ruim, mas como tem 15+ dígitos de precisão de representação que é mais do que a maioria dos programas precisa, mas eu concordo que não faz sentido usar BigDecimal algumas vezes, pois é mais provável que você adicione bugs / complexidade.
Peter Lawrey

Respostas:

225

Você precisa usar o doubleValue()método para obter o valor duplo de um objeto BigDecimal.

BigDecimal bd; // the value you get
double d = bd.doubleValue(); // The double you want
SudoRahul
fonte
Oi, usei o mesmo, mas o problema é que os dois anser são diferentes, minha saída decimal foi 13555261857.79 e quando convertida para o dobro de 1.355526185779E10 .. Como faço para obter a mesma saída depois de converter decimal em duplo
user13926345
@ user13926345 - Ambos têm os mesmos valores. Só que a primeira saída é a representação normal do valor e a outra é a representação científica .
SudoRahul
35

Você pode converter BigDecimalpara doubleusar .doubleValue(). Mas acredite em mim, não use se você tiver manipulações de moeda. Deve sempre ser executado BigDecimaldiretamente nos objetos. A perda de precisão nesses cálculos é um grande problema nos cálculos relacionados à moeda.

HIREN011
fonte
10

Use o método doubleValue presente na classe BigDecimal :

double doubleValue()

Converte isso BigDecimalem um double.

Juned Ahsan
fonte