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