Arrondir float c++

shub85 -  
DrakEmono Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, Je voulais savoir si il existait une fonction en C ou C++ pour arrondir un float (1.22) -> entier (1), ou 1,55 -> 2..
Merci.. Pouveez vous m'aider??

4 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
voir aussi du coté de round()
http://jp.barralis.com/linux-man/man3/round.3.php
4
shub85
 
Merci beaucoup...
2
Raphboisxxx
 
Tu peux toujours aussi utiliser un cast vers un int, tu perds tes decimales .... pas la meilleure solution mais c'est toujours possible, oubli pas ton fflush sinon tu peux avoir de mauvaises surprise aussi
0
mar
 
tu peut tout simplement écrire
int a;
float f;
a=(int )(f+0.5 );
0
DrakEmono Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
C'est exactement ce qu'a dit Raph... et un simple round() suffit largement.
0
dandypunk Messages postés 832 Date d'inscription   Statut Membre Dernière intervention   83
 
Il y a deux solutions :

-A l'affichage:
printf("%0f",variable)

-Pour utiliser la valeur il faut utiliser les fonctions ceil(variable) et floor(variable) qui retourne l'entier >=variable (resp <= variable)

A la volée la fonction donne

#include <math.h>

int iArrondi(float fValeur)
{
  
  float fDecimal;
  int iRésultat;
   
  if (fValeur<0)

     {
          fDecimal=fValeur-ceil(fValeur);
          if (fDecimal > -0.5)
             iResultati=ceil(fValeur);
          else
            iResultati=floor(fValeur);

     }
  else
     {
           fDecimal=fValeur-floor(fValeur);
           if (fDecimal< 0.5)
             iResultati=floor(fValeur);
          else
             iResultat=ceil(fValeur);
     }
  
  return iResultat;
}
1
invite
 
et avec ceil() ??
0
DrakEmono Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
Il demande un arrondi à l'entier proche, ce n'est pas ce que fait ceil().
0