urgent : comment limiter

bonjour, le nombre de 0 après la virgule pour un format double, je veux mettre seulement 3 chiffres après virgule. Cordialement

je pensais a cette idee mais sa ne marche pas :frowning:

void SerialPrintPID(double Reel)
{
  int EntierReel;
  EntierReel=Reel*1000;
 if(Reel>=0)
 {
 Serial.print(EntierReel/1000, DEC);  
 Serial.print(".");  
 Serial.print(EntierReel%1000, DEC);}  
  if(Reel<0)
 {
 EntierReel= Reel*1000;
 Serial.print(EntierReel/100, DEC);  
 Serial.print(".");  
 Serial.print(abs(EntierReel%100), DEC);}
}

Tu fais :

double(int(valDouble*1000))/1000 ;

La valDouble est divisé par 1000 pour repousser la virgule, puis est converti en int, ce qui a pour effet d'effacer ce qui se trouve après la virgule. Une reconversion en double et un division par 1000 pour replacer la virgule au bon endroit.

sa marche qu'à moitié j'obtiens bien 3 chiffres après la virgule mais je voudrais effacer les zéros qui les précèdent

Essaye ça :

float(int(valDouble*1000))/1000 ;

Par contre je ne comprends pas, tu veux supprimer les zéros qui se trouve où ?

ben je veux supprimer les zéros situés après les 3 chiffres après la virgule lorsque je fais appel à un Serial.print

Donc ce n'est pas ceux qui précédent ...

[edit]j'obtiens bien 3 chiffres après la virgule mais je voudrais effacer les zéros qui les précèdent [/edit]

Avec le float ça donne quoi ?

ben avec le float j’ai seulement 2 chiffres après la virgule en plus si je entre par exemple 20.023 il me renvoi 0.63 :o je ne comprends rien

void SerialPrintReel(double Reel)
{
 int EntierReel,Dec,D1,D2,D3;
  EntierReel=int(Reel);
  Dec=(Reel-EntierReel)*10;
  D1=Dec;
  Dec=(Dec-D1)*100;
  D2=Dec;
  Dec=(Dec-D2)*1000;
  D3=Dec;
 if(Reel>=0)
 {
 Serial.print(EntierReel) ;  
 Serial.print(".");  
 Serial.print(D1);
 Serial.print(D2);
 Serial.print(D3);
 } 
}

j'ai trouvé une solution !!! enfin presque il reste quelque chose a modifier en tout cas le principe est le bon