Pages: [1]   Go Down
Author Topic: urgent : comment limiter  (Read 1122 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

je pensais a cette idee mais sa ne marche pas smiley-sad
Code:
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);}
}
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu fais :

Code:

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.
« Last Edit: June 18, 2010, 04:04:15 am by jfs » Logged

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

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: June 18, 2010, 04:40:37 am by freeman32 » Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Essaye ça :

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

Par contre je ne comprends pas, tu veux supprimer les zéros qui se trouve où ?
« Last Edit: June 18, 2010, 04:48:57 am by jfs » Logged

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

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
Logged

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

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
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
Logged

Pages: [1]   Go Up
Jump to: