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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy