diff --git a/cm2-nombres-code/floatdouble.c b/cm2-nombres-code/floatdouble.c new file mode 100644 index 0000000..4d1f1e7 --- /dev/null +++ b/cm2-nombres-code/floatdouble.c @@ -0,0 +1,15 @@ +#include +#include + +int main() +{ + float a = 0.1; + float b = 0.2; + float c = 0.3; + + /* double a = 0.1; + double b = 0.2; + double c = 0.3; */ + + if (a+b == c) {printf("égaux\n");} else {printf("différents\n");} +} diff --git a/cm2-nombres.md b/cm2-nombres.md index 5c7f8b2..2302461 100644 --- a/cm2-nombres.md +++ b/cm2-nombres.md @@ -115,7 +115,7 @@ Virgule fixe - L'approximation n'est pas forcément visible car nous utilisons une précision assez grande mais elle est là - => Pas de calcul décimal exact en réels, **pas de tests d'égalités** !!! - égalités entre entiers seulement - - au pire test d'écart à la valeur recherchée (mais c'est critiqué) + - au pire test d'écart à la valeur recherchée (mais c'est critiqué, les incertitudes ne se propagent pas d'une bonne manière) - Utilisé en pratique si pas mieux dispo (micro-contrôleur sans unité à virgule flottante par exemple) @@ -128,6 +128,7 @@ Virgule flottante - Exemple du double : 1 bit de signe, 11 bits d'exposant, 52 bits de mantisse (norme IEE754) - Les mêmes approximations que précédemment ! (et donc pas non plus de tests d'égalité !!!) - Couramment utilisé +- ([floatdouble.c](cm2-nombres-code/floatdouble.c)) Calcul exact (bonus, hors programme)