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.
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 getdouble d = bd.doubleValue();// The double you want
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.
new BigDecimal(2).doubleValue()
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")BigDecimal
a 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.Double
e nãodouble
. É um campo que pode sernull
?double
nã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.Respostas:
Você precisa usar o
doubleValue()
método para obter o valor duplo de um objeto BigDecimal.fonte
Você pode converter
BigDecimal
paradouble
usar.doubleValue()
. Mas acredite em mim, não use se você tiver manipulações de moeda. Deve sempre ser executadoBigDecimal
diretamente nos objetos. A perda de precisão nesses cálculos é um grande problema nos cálculos relacionados à moeda.fonte
Use o método doubleValue presente na classe BigDecimal :
Converte isso
BigDecimal
em umdouble
.fonte