Maison >développement back-end >C++ >Pourquoi un calcul à virgule flottante donne-t-il 1,9999999999999996 au lieu de 2,0 ?
Gestion des écarts de précision dans les représentations à virgule flottante
Lorsque vous travaillez avec des nombres à virgule flottante, des limitations de précision dues à leur représentation interne peuvent conduire à des résultats inattendus. Considérez le problème suivant :
Dans un programme, une variable nommée mw est initialisée avec la valeur 4.6, obtenue en convertissant une chaîne avec cette valeur en double. Cependant, lorsqu'il est utilisé dans un calcul pour déterminer le nombre de colonnes, le résultat est 1,99999999999999996 au lieu du 2,0 attendu.
Cet écart se produit parce que la représentation interne des nombres à virgule flottante est approximative. Dans ce cas, 4,6 ne peut pas être stocké avec précision sous forme de flottant, ce qui entraîne l'utilisation d'une valeur légèrement différente de 4,59999999999999996 dans le calcul.
Pour résoudre ce problème, il est important de reconnaître que les comparaisons d'égalité stricte avec les flottants- les numéros de points ne sont pas fiables. Envisagez plutôt d'utiliser une plage de valeurs acceptables pour déterminer si un résultat est suffisamment proche du résultat attendu.
De plus, sachez que certaines valeurs ne peuvent pas être représentées avec précision sous forme de nombres à virgule flottante. Pour plus d'informations, reportez-vous à des ressources complètes telles que « Ce que tout informaticien devrait savoir sur l'arithmétique à virgule flottante » et « Comparaison des nombres à virgule flottante ». En comprenant ces limitations et en appliquant des techniques appropriées, vous pouvez atténuer les problèmes de précision lorsque vous travaillez avec des nombres à virgule flottante.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!