Quel .h inclure pour la fonction ROUND ? [C++ Builder] - C++ - Programmation
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...
Marsh Posté le 19-07-2002 à 16:38:35
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)
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 ...
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 ...
Marsh Posté le 19-07-2002 à 17:40:06
ça y est g reussi , en fait il fallait que 2 lignes
Code :
|
Marsh Posté le 19-07-2002 à 18:06:22
C'est quoi ce langage où y a même pas de fonction d'arrondi
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
|
oulà t'as pas plus lent ?
un ptit sqrt() ou un cos().....
ça manque je trouve....
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.
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()..... ç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
Marsh Posté le 19-07-2002 à 20:44:10
pow c'est plus lent que la solution de faire des casts
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...
tu fais un truc du style (int)floor(x+0.5)
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)
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