Objectifs
- Comprendre la différente entre une valeur Int et Float
- Savoir convertir une valeur Int vers Float
- Exemple d’utilisation d’une entrée analogique
- Savoir calculer l’erreur relative
- Etc.
Int
- char (8 bits), int (16), byte (16), unsigned int (16), long (32)
- Valeurs entières, discrets
- La définie des valeurs (max, min) dépend du type de la variable
- Le pas d’incrémentation minimale est égal à « 1 »
- Le pas de décrémentation minimale est égal à « -1 »
- On ne peut pas avoir un pas fractionnel (Ex: 0.1,1.5, etc.)
float, double
- Valeurs réelles sur 32 bits (float) ou 64 bits (double)
- Inclut les valeurs entières
- On peut avoir un pas fractionnel
float (32 bits) Vs double (64 bits)
![format float 32 bits](https://www.electronique-mixte.fr/wp-content/uploads/2020/11/format-float-32-bits.jpg)
![format float 64 bits](https://www.electronique-mixte.fr/wp-content/uploads/2020/11/format-float-64-bits.jpg)
Comment convertir une valeur int en float ?
Val_float=(float)Val_int;
Comment convertir une valeur float en int ?
Val_int=Val_float; // Conversion automatique
// ou bien
Val_int=(int)Val_float; // Conversion forcée
Exemple
*/
unsigned int ADC_int, A0_int;
float A0_float=0.00;
void setup() {
// Init serial port
Serial.begin(9600);
}
void loop() {
// Lecture entrée analogique A0
ADC_int=analogRead(A0);
// Conversion valeur en tension (INT)
A0_int=5*ADC_int/1023;
// Conversion valeur en tension (INT)
A0_float=5.0*(float)ADC_int/1023.0;
// Affichage des valeurs
Serial.print("Tension en V, (INT): ");Serial.println(A0_int);
Serial.print("Tension en V, (FLOAT): ");Serial.println(A0_float);
Serial.print("Erreur en (mV): ");Serial.println(A0_float-(float)A0_int);
Serial.print("Erreur relative (%): ");Serial.println(100.0*(A0_float-(float)A0_int)/(float)A0_int);
Serial.print("\n");
// Loop delay
delay(1000);
}
Une réponse sur « Arduino #37: Int Vs float »
la joie de faire des recherches