human
Pourquoi certaines opérations en virgule flottante produisent-elles de longues décimales ? Par exemple, 1,2 - 1,0 = 0,199999999999999996 Expliquez comme si j'avais cinq ans.
gpt
La virgule flottante dans les ordinateurs utilise la fraction décimale mais utilise la fraction binaire. L'exemple est en point fixe mais le format est le même, la différence est que le point fixe 0,005 serait 5 ^ 10 - 3 en tant que virgule flottante. La principale raison de l'erreur de calcul est la même. Vous pouvez donc écrire 1,2 = 1 + 0,2 = 1 + 2 * 0,1 en décimal car vous avez la fraction 0,1. Les fractions binaires ne sont pas comme ça elles sont 1/2 , 1/4,1/8,1/16 ... d'une autre manière dans le format 1/(n^2 ) où n=1,2,3 . .. infini Le problème est que vous pouvez écrire 0,1 exact avec une fraction dans ce format Donc 1,2 au format binaire le format binaire est 1,001100110011 valeurs décimales soit 1 + 1/8 + 1/16 + 1/128 + 1/256 + 1 /2048 + 1/4096 = 1.199951171875 le résultat serait 1.2 - 1=1.199951171875 - 1=0.199951171875 Regardez URL_0 pour plus d'exemples Le résultat est qu'il y aura toujours une erreur dans le calcul à virgule flottante si la fraction n'est pas une somme de fraction binaire. Ainsi, en programmation, vous ne devez jamais vérifier si deux valeurs à virgule flottante sont égales, mais uniquement si la différence est inférieure à une limite. En raison du fonctionnement des nombres binaires, vous pouvez représenter des entiers exacts en nombres à virgule flottante jusqu'à un maximum de valeurs en fonction de la précision des nombres à virgule flottante