J'ai le code suivant:Débogueur arrondit les nombres flottants ... pourquoi cela se produit-il, et comment le contourner?
public static float FLOAT_VALUE = 0.899999761581421f;
Mais chaque fois que j'appelle cette valeur en utilisant le débogueur, je vois qu'il est maintenant devenu 0.9f. Pourquoi cela se passe-t-il et comment le contourner?
https://stackoverflow.com/questions/588004/is-floating-point-math-broken – epascarello
'float' a [6 à 9 chiffres décimaux significatifs précision] (https://en.wikipedia.org/wiki/Single-precision_floating-point_format#IEEE_754_single-precision_binary_floating-point_format:_binary32). Vous spécifiez 15 chiffres de précision. 'float' ne peut pas stocker cela, mais' double' peut, puisqu'il a [15 à 17 précision décimale significative] (https://en.wikipedia.org/wiki/Double-precision_floating-point_format#IEEE_754_double-precision_binary_floating- point_format: _binary64). – Andreas
Le débogueur arrondit à moins de chiffres qu'il ne le devrait. Le flottant le plus proche de 0,899999761581421 est 0,89999973773956298828125. Le flottant le plus proche de 0.9 est 0.89999997615814208984375. Ils sont différents. La conversion de toString de votre flotteur est 0.89999974, pas 0.9 –