2010-06-16 5 views
0

Je suis confronté à un problème en divisant un double par un int. Extrait de code est:Division d'un double avec entier

double db = 10; 
    int fac = 100; 
    double res = db/fac; 

La valeur de résolution est 0.10000000000000001 au lieu de 0.10.

Est-ce que quelqu'un sait quelle est la raison pour cela? J'utilise cc pour compiler le code.

+9

Dupliquer de nombreuses questions. Voir la balise "flottant-précision". – dan04

+2

duplicata possible de [Pourquoi 99,99/100 = 0,9998999999999999] (http://stackoverflow.com/questions/2930314/why-does-99-99-100-0-9998999999999999) – abelenky

Répondre

0

double est un opérateur à virgule flottante, ils ne fournissent pas de valeurs précises. Recherchez des opérateurs de précision et de virgule flottante sur google.

3

La CPU utilise une représentation binaire des nombres. Votre résultat ne peut pas être représenté exactement en binaire. 0,1 en binaire est 0,00011001100110011 ... CPU le tronque à un certain point et obtient une erreur d'arrondi.

Questions connexes