
Envoyé par
hibour
Même un bigDecimal ne ferai pas l'affaire
System.out.println(new BigDecimal(12.34).subtract(new BigDecimal(12.0)));
résultat:
0.339999999999999857891452847979962825775146484375
On a une précision limitée quoiqu'on fasse (regarde la représentation des nombre flottant sur un PC qui est une puissance de 2!).
Non les BigDecimal résolvent bien son problème. Comme le nom l'indique il ne reposent sur une représentation en base dix contrairement aux float/double en base 2.
Si ton exemple ne marche pas, c'est parce que tu passes d'abord par des floats qui sont ensuite convertis en BigDecimal.
Si tu fais :
System.out.println(new BigDecimal("12.34").subtract(new BigDecimal("12.0")));
le résultat est correct.
Partager