Go Down

Topic: urgent : comment limiter (Read 1 time) previous topic - next topic

romain

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

romain

je pensais a cette idee mais sa ne marche pas :(
Code: [Select]
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);}
}

Jean-François

#2
Jun 18, 2010, 10:55 am Last Edit: Jun 18, 2010, 11:04 am by jfs Reason: 1
Tu fais :

Code: [Select]


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.
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

romain

#3
Jun 18, 2010, 11:38 am Last Edit: Jun 18, 2010, 11:40 am by freeman32 Reason: 1
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

Jean-François

#4
Jun 18, 2010, 11:41 am Last Edit: Jun 18, 2010, 11:48 am by jfs Reason: 1
Essaye ça :

Code: [Select]
float(int(valDouble*1000))/1000 ;


Par contre je ne comprends pas, tu veux supprimer les zéros qui se trouve où ?
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

romain

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

Jean-François

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 ?
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

romain

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

romain

Code: [Select]
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

Go Up