web-dev-qa-db-fra.com

Format BigDecimal sans notation scientifique avec une précision totale

Je voudrais convertir un BigDecimal en String à des fins d'impression mais imprimer tous les chiffres sans notation scientifique. Par exemple:

BigDecimal d = BigDecimal.valueOf(12334535345456700.12345634534534578901);
String out = d.toString(); // Or perform any formatting that needs to be done
System.out.println(out);

J'aimerais avoir 12334535345456700.12345634534534578901 imprimé. En ce moment, je reçois: 1.23345353454567E+16.

29
Mensur

Pour conserver la précision d'un BigDecimal, vous devez passer la valeur en tant que String

BigDecimal d = new BigDecimal("12334535345456700.12345634534534578901");
System.out.println(d.toPlainString());
44
Reimeus

La classe BigDecimal a une méthode toPlainString. Appelez cette méthode au lieu de la norme toString et elle affichera le numéro complet sans notation scientifique.

Exemple

BigDecimal b = new BigDecimal("4930592405923095023950238502395.3259023950235902");
System.out.println(b.toPlainString());

Output: 4930592405923095023950238502395.3259023950235902
16
christopher

Vous souhaitez utiliser un DecimalFormat:

DecimalFormat df = new DecimalFormat("#.#");  
String output = df .format(myBD);
System.out.println(value + " " + output);
3
Woot4Moo