Arrondir la valeur d'un Float

Bonjour, je cherche un fonction pour arrondir un float pour l'afficher. Par exemple une pression 1013,56 donnerait 1013,6. Quelle fonction peut faire çà. Comment n'afficher qu'un seul chiffre après la virgule? merci

Bonjour,

Ce n'est pas clair. Tu veux arrondir le float ou l'afficher avec une virgule?

L'arrondir au 1/10 et ensuite l'afficher correctement (sur un LCD par exemple).

Sur un lcd (et d'ailleurs en général) tu n'as pas besoin de l'arrondir, il suffit de préciser le nombre de décimales.

float val=1013.56;
lcd.print(val,1);

Effectivement, tout simplement, merci!

kamill:
Bonjour,

Ce n’est pas clair. Tu veux arrondir le float ou l’afficher avec une virgule?

Bonjour, j’aimerais faire la meme chose : arrondir un float mais pour faire des calculs par la suite :

ex: 22.19 → 22.2 comment faire ?

Merci

Bonjour,

Tu multiplies pas 10, tu arrondis à l'unité la plus proche et tu divises par 10

  float f=22.19;
  f=floor(10*f+0.5)/10;

Attention cependant avec les flottants, une représentation décimale avec un nombre fini de chiffres ne veut pas dire que la représentation interne en binaire a aussi un nombre fini de bits (donc la valeur interne n'est pas toujours "juste" par rapport à la représentation décimale).

Pour s'en convaincre il suffit de faire Serial.println(22.2, 7), ça donne 22.2000007

impecc l’astuce de floor !

Pour détailler mon projet : c’est un thermometre a affichage LCD qui affiche les valeurs Mini et maxi.
Le capteur est un 18B20 . Je prefere garder la précision du capteur mais ne prendre qu’un chiffre apres la virgule pour plus de lisibilité sur l’afficheur.

Dans le but de rafraichir la mesure QUE si la temperature change : c’est idiot de rafraichir la valeur si la temp passe de 21.23 à 21.19 !

voila ce que ca donne en piece attachée.

bof... La précision analogique du capteur est de plus ou moins 0,5°C entre -10°C et +85°C donc afficher un chiffre après la virgule n'est pas pertinent...

oui , c'est sur !

Quel capteur tu propose , tout en restant simple au niveau soft/hard ?

c’est pas la bonne question :slight_smile:

la question c’est de quelle Exactitude, précision, résolution, reproductibilité avez vous vraiment besoin pour votre projet ? est-ce utile de savoir qu’il fait 22.3°C ou 22°C simplement ? (sachant que la T° est rarement homogène dans un milieu)

un MCP9808 (en I2C) fait mieux généralement qu’un 18B20 (accuracy ±0.25°C sur la zone -40°C à +125°C et résolution de 0.0625°C)

J’ai retrouvé un article en anglais sur le sujet

Effectivement , sans faire de test labo, afficher 22° plutot que 22.3° (avec un capteur de 0.5 de precision) serait plutot judicieux MAIS ça fait quand meme plus simpa sur un ecran LCD :D

Afficher une décimale, même si elle n'est pas forcément garantie permet de voir si la température a tendance à monter ou à descendre.

kamill: Afficher une décimale, même si elle n'est pas forcément garantie permet de voir si la température a tendance à monter ou à descendre.

si la décimale est significative, oui....

pepe:
… - en n’affichant que la valeur entière 12°C, la mesure pourrait être comprise entre 11,5°C et 12,5°C avant arrondi, correspondant à une température comprise entre 11,0°C et 13,0°C, soit pour l’utilisateur une incertitude de 2,0°C ; …

L’arrondi de 12.5 est 12 et non 13 :wink: mais ça ne fait rien, l’incertitude est bien de 2 °C.

Cordialement.

Pierre