probleme de calcul avec des float

Bonjour,

J'ai l'impression que mes float sont arrondis à 0.25 prés, ce qui engendre des erreurs dans mes calculs. Comment palier à ce problème ? dans l'exemple ci-après, le résultat retourné est "C_inter=2455941.00" alors que j'attends "C_inter=2455940.90"

    float C_calcul = 122.1;
    float B_calcul = 2456063.0;
    float C_inter = B_calcul - C_calcul;
    Serial.print("C_inter=");
    Serial.println(C_inter,2);

Merci de vos réponses.

Bonjour,

Dans l'arduino les floats sont codés sur 4 octets, ce qui fait environ 7 chiffres significatifs. Ta valeur B est déjà à 7 chiffres significatifs et comme les calculs sont arrondis à 7 chiffres (environ), tu as une différence avec la valeur réelle.

Pour t'en convaincre fait B_calcul = 2456063.1 et affiche le. Ce n'est pas un problème d'arrondi après la virgule, c'est un problème de nombre de chiffres significatifs: tu as le même problème avec B_calcul = 24560631.0

Re-bonjour,

Merci de vos réponses. Je ne comprends pas bien comment représenter mes float en virgule fixe. pepe , Peux-tu me donner une exemple avec mes valeurs.

Merci pour tous ces éléments :)

Merci pepe, ça m'est aussi utile.

J'avais déjà pas mal pratiqué le javascript (appris sur le net) et pensais que ce code ne fonctionnait pas :long frac = C_inter>0 ? C_inter%unites : -C_inter%unites; Je l'avais déjà essayé sans succès, probablement une erreur accepté en javascript( plus souple) et pas en arduino 8)