[C++ Builder] Quel .h inclure pour la fonction ROUND ?

Quel .h inclure pour la fonction ROUND ? [C++ Builder] - C++ - Programmation

Marsh Posté le 19-07-2002 à 15:27:22    

je trouve pa qQuel .h inclure pour la fonction ROUND sous builder 3 , si qnn pouvait m aider ça serait sympa !


Message édité par seb90 le 19-07-2002 à 15:28:07
Reply

Marsh Posté le 19-07-2002 à 15:27:22   

Reply

Marsh Posté le 19-07-2002 à 15:34:58    

tu l'as fait toi meme
 
:)  
 
c'est po tres dure non ?

Reply

Marsh Posté le 19-07-2002 à 15:36:07    

bah pkoi se casser la tete qd c deja fait ?

Reply

Marsh Posté le 19-07-2002 à 15:38:19    

bon ben tout compte fé je crois que g plu que ça a faire

Reply

Marsh Posté le 19-07-2002 à 15:41:17    

ca fait longtemps que g po programmer en c
 
mais ca doit donner un truc du genre:
 
long Round(float f)
{
 if( (f- trunc(f)+0.5) > 1)
  return trunc(f);
 return trunc(f);
   
}
 
PS: je sais plus si ca existe f, sinon, il faut convertir f en entier tout simplement (il tronque automatiquement je crois...)
PPS: je ne suis pas sur du tout que ca marche, mais c'est l'esprit...

Reply

Marsh Posté le 19-07-2002 à 16:38:35    

[:f1key] si la fonction existe, dans l'aide ils disent dans quelle unit c'est
à priori c'est dans math.h (et round en minuscule bien sûr)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 19-07-2002 à 17:07:31    

justement c pa marqué et c pas dans math.h ...
en plus la fonction est en majuscule ...

Reply

Marsh Posté le 19-07-2002 à 17:11:33    

farok a écrit a écrit :

ca fait longtemps que g po programmer en c
 
mais ca doit donner un truc du genre:
 
long Round(float f)
{
 if( (f- trunc(f)+0.5) > 1)
  return trunc(f);
 return trunc(f);
   
}
 
PS: je sais plus si ca existe f, sinon, il faut convertir f en entier tout simplement (il tronque automatiquement je crois...)
PPS: je ne suis pas sur du tout que ca marche, mais c'est l'esprit...
 




 
En fait c pa ça que je veux je veux arrondir au nombre de chiffre desiré apres la virgule comme le fait round ... g essayé de la programmer mais g du mal ...

Reply

Marsh Posté le 19-07-2002 à 17:40:06    

ça y est g reussi , en fait il fallait que 2 lignes  ;)  
 

Code :
  1. float Round ( double in , double prec )
  2. {
  3.     int in2=in*pow(10,prec);
  4.     in=in2/pow(10,prec);
  5.     return in;
  6. }


Message édité par seb90 le 19-07-2002 à 17:40:41
Reply

Marsh Posté le 19-07-2002 à 18:06:22    

C'est quoi ce langage où y a même pas de fonction d'arrondi :heink:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 19-07-2002 à 18:06:22   

Reply

Marsh Posté le 19-07-2002 à 18:45:05    

seb90 a écrit a écrit :

ça y est g reussi , en fait il fallait que 2 lignes  ;)  
 

Code :
  1. float Round ( double in , double prec )
  2. {
  3.     int in2=in*pow(10,prec);
  4.     in=in2/pow(10,prec);
  5.     return in;
  6. }






 
 
 
oulà t'as pas plus lent ?
 
un ptit sqrt() ou un cos()..... :D
ça manque je trouve....

Reply

Marsh Posté le 19-07-2002 à 18:48:32    

tu fais (pour un arrondi au plus près):
 
float i,j;
 
j=quelquechose();
 
i=(float)((int)((float)j+0.5f));
 
c'est très crade mais ça marche.
 

Reply

Marsh Posté le 19-07-2002 à 20:41:48    

bjone a écrit a écrit :

 
 
 
 
oulà t'as pas plus lent ?
 
un ptit sqrt() ou un cos()..... :D
ça manque je trouve....




 
Ben je vois pa ou c lent y a pas de boucles en plus ... tu c les ùmultiplications ça se fait rapidement de nos jours  ;)

Reply

Marsh Posté le 19-07-2002 à 20:44:10    

pow c'est plus lent que la solution de faire des casts ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 20-07-2002 à 12:06:53    

seb90 a écrit a écrit :

 
 
Ben je vois pa ou c lent y a pas de boucles en plus ... tu c les ùmultiplications ça se fait rapidement de nos jours  ;)  




 
pow c'est un logarithme et un exponentiel : ultra lent.
Il y a 2 fonctions d'arrondi :
* ceil() qui arrondi à l'entier superieur
* floor() qui arrondi à l'entier inferieur
 
Ca sert de lire la doc de temps en temps...  :sarcastic:  :sarcastic:  :sarcastic:  
 
tu fais un truc du style (int)floor(x+0.5)


Message édité par smaragdus le 20-07-2002 à 12:08:18
Reply

Marsh Posté le 20-07-2002 à 13:49:45    

par défaut le C/C++ impose un arrondi par défaut....
donc le floor() est théoriquement superflu....
 
(par contre lors des conversions float->int, le fpu est configurable en par défaut/excès/au plus près)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed