Arrondir float c++

shub85 -  
DrakEmono Messages postés 27 Statut Membre -
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 10112 Statut Contributeur 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 27 Statut Membre
 
C'est exactement ce qu'a dit Raph... et un simple round() suffit largement.
0
dandypunk Messages postés 838 Statut Membre 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 27 Statut Membre
 
Il demande un arrondi à l'entier proche, ce n'est pas ce que fait ceil().
0