« Programmation C/Types de base » : différence entre les versions
Contenu supprimé Contenu ajouté
m →Chaîne littérale : orthographe |
Un des codes C d'exemple était inutile au possible (boucle qui répétait 1000fois EXACTEMENT la même chose : for(...) i = j * 0.1; ). De plus, il était conseillé comme exemple mais ... amenait tout de même à une erreur de précision... |
||
Ligne 317 :
Le résultat est 99,999046, ce qui montre que la précision du type <code>float</code> est en général mauvaise, d'autant plus que le nombre 0,1 n'est pas représentable de manière exacte en binaire<ref>0,1<sub>10</sub> = 0.0001100110011...<sub>2</sub></ref>. Il est ainsi conseillé d'utiliser le type <code>double</code> à la place de <code>float</code> autant que possible. Dans ce cas de figure, il est préférable d'éviter les accumulations d'erreurs infinitésimales, en réécrivant le code de la manière suivante :
<source lang="c" line="1">
#include <stdio.h>
Ligne 323 :
{
float i;
int j = 1000;
▲ }
printf("i = %f\n", i);
return 0;
Ligne 333 ⟶ 332 :
</source>
Le résultat est alors 100.0, sans aucune erreur d'accumulation et d'arrondis.
Pour plus d'informations sur ce domaine, un wikilivre [[Mathématiques/Arithmétique flottante|Arithmétique flottante]] est disponible.
|