2014-05-09 3 views
3

Je vais faire des calculs qui contiennent des nombres petits ou grands et qui donnent un très grand ou un très petit nombre.Comment obtenir une très grande précision pour un trop grand nombre et pour un trop petit nombre en Java?

Ce dont je me soucie maintenant est comment faire les choses aller aussi précis que possible.

Lorsque je tente ce calcul sur la calculatrice Google 1000^10 = 1e + 30 qui peut être lu comme 1000.000.000.000.000.000.000.000.000.000

Lorsque je tente les mêmes calculs en utilisant BigDecimal, je suis arrivé à un résultat différent!

BigDecimal bigNumber = new BigDecimal(Math.pow(1000, 10)); 
    System.out.println(bigNumber); 

1000.000.000.000.000.019.884.624.838.656

Je suis heureux que cela me donne toute la gamme des nombres sans utiliser la notation scientifique, mais il donne quelques chiffres d'ordures supplémentaires à la fin.

Notez que je ne suis pas limité à BigDecimal. Je me soucie de la précision de toute façon.

Alors, Comment obtenir une très grande précision pour un trop grand nombre et pour un nombre trop petit en Java?

+7

Vous n'avez pas « essayer les mêmes calculs en utilisant' BigDecimal.' » Vous avez fait les mêmes calculs en virgule flottante et * puis * converti le résultat * * à 'BigDecimal'. – EJP

+0

Vous devez utiliser BigDecimal. Faire le calcul en "double" et le convertir en BigDecimal ne lui donne pas plus de précision. –

Répondre

9

Utiliser BigDecimal et faire le calcul dans double est le même que celui de ne pas utiliser BigDecimal du tout.

Utilisez BigDecimal pour faire des calculs:

BigDecimal bigNumber = new BigDecimal(1000).pow(10); 
System.out.println(bigNumber); 
Questions connexes