Je dois multiplier un float
par 100
afin de convertir de €
à cents
. Le problème que j'ai, c'est que la valeur des grands nombres n'est pas calculée correctement.Que puis-je faire contre les notations à virgule flottante?
Par exemple:
String aa = "1000009.00";
aa = aa.replaceAll(",", ".");
float bb = Float.parseFloat(aa);
bb=Math.round(bb*100);
System.out.println(bb);
Ce que je veux est: 1.00000896E8
donc je sais que cela est à cause de la façon dont float
en Java fonctionne. J'ai cherché une réponse mais les gens disent toujours "utiliser Math.round()
" qui ne fonctionne pas pour moi.
Que puis-je faire pour éviter cela?
Utiliser 'double' au lieu de' float'. – Yahya
Ou encore mieux d'utiliser 'BigDecimal' au lieu de' float'. – Henry
'float' a [6 à 9 précision décimale significative] (https://en.wikipedia.org/wiki/Single-precision_floating-point_format#IEEE_754_single-precision_binary_floating-point_format:_binary32), et votre numéro' 1000009.00' est 9 chiffres longs. Vous avez dépassé la précision de 'float'. Utilisez à la place 'double' (15-17 chiffres) ou' BigDecimal' (précision illimitée). – Andreas