Pièges avec les calculs
Pourquoi mon calcul donne un résultat faux ?
c = 16 * 60 + 25 + 35 / 60 = 985.00 au lieu de 985.58
c = 0.5 + 2 = 2 au lieu de 2.5
c = 1 / 3 = 0 au lieu de 0.33
Explication
Si un calcul comporte des chiffres à virgule ou des calculs avec des entiers qui peuvent aussi aboutir à des chiffres à virgule, il faut utiliser le type float.
Exemples pour l'addition
Programme |
int a = 0.5; int b = 2; int c; void loop() { c = a + b; } |
int a = 0.5; int b = 2; float c; void loop() { c = a + b; } |
float a = 0.5; int b = 2; int c; void loop() { c = a + b; } |
float a = 0.5; int b = 2; float c; void loop() { c = a + b; } |
Résultat |
c = 2 |
c = 2.00 |
c = 2 |
c = 2.50 |
Fonctionne ? |
NON |
NON |
NON |
OUI |
Exemples pour la division
Programme |
int a = 1; int b = 3; int c; void loop() { c = a / b; } |
int a = 1; int b = 3; float c; void loop() { c = a / b; } |
float a = 1; int b = 3; int c; void loop() { c = a / b; } |
int a = 1; float b = 3; float c; void loop() { c = a / b; } |
float a = 1; int b = 3; float c; void loop() { c = a / b; } |
Résultat |
c = 0 |
c = 0.00 |
c = 0 |
c = 0.33 |
c = 0.33 |
Fonctionne ? |
NON |
NON |
NON |
OUI |
OUI |
Il faut utiliser la division flottante au lieu de la division entière. Pour cela :
- il faut que le type du résultat (c) soit float.
- et que le type du numérateur (a) ou du dénominateur (b) soit aussi float.
Remarque : si la variable est un entier, on peut aussi forcer son type. La variable sera convertie en nombre flottant avant de faire la division. ex : c = float(a) / b;
Exemples de division et d'addition
Programme qui calcul le nombre de minutes à partir de secondes, minutes et heures.
Programme |
float temp_min; void loop() { temp_min = 16 * 60 + 25 + 35 / 60 } |
float temp_min; void loop() { temp_min = 16 * 60 + 25 + float(35) / 60 } |
int s = 35; int min = 25; int h = 16 ; float temp_min; void loop() { temp_min = h * 60 + min + float(s) / 60 } |
Résultat |
temp_min = 985.00 |
temp_min = 985.58 |
temp_min = 985.58 |
Fonctionne ? |
NON |
OUI |
OUI |
Créé avec HelpNDoc Personal Edition: Créer des documents d'aide HTML facilement