Division float par float en c++
joe amouz
Messages postés
12
Statut
Membre
-
joe amouz -
joe amouz -
Bonjour à tous,
Je travaille actuellement sur un exercice en c++, j'aimerais récupérer le quotient entier de la division d'un float par un float. S'il vous plait est-ce possible ? Si c'est le cas comment faire parce que je m'en sort pas.nMerci d'avance.
Je travaille actuellement sur un exercice en c++, j'aimerais récupérer le quotient entier de la division d'un float par un float. S'il vous plait est-ce possible ? Si c'est le cas comment faire parce que je m'en sort pas.nMerci d'avance.
4 réponses
Résumé de la discussion
Le problème consiste à récupérer le quotient entier de la division de deux floats en C++, en distinguant tronquer, arrondir ou convertir en entier selon le comportement souhaité. Par exemple, on peut écrire (int)(x/y) pour tronquer, utiliser floor ou ceil selon le sens, ou employer lround pour un arrondi au plus proche; chacune a ses limites selon le type. En cas de signe négatif, le comportement diffère selon la méthode choisie, et les fonctions floor, ceil ou lround imposent des conversions de type et une précision des floats qui peuvent influencer le résultat.
-
#include <math.h>
value = round(x);
et -lm dans gcc-
-
-
-
http://www.manpagez.com/man/3/round/ :
The round() , lround() , and llround() functions conform to ISO/IEC
9899:1999(E)
il est présent dans les pages de man... Tu a vu où qu'il n'était pas standard ? il est standard C99, au moins. -
-
-
int(x/y);
-
faudra peut-être forcer le résultat à prendre la forme d'un entier:
float x,y;
cout<<(int)(x/y)<<endl;-
-
-
-
-
BOB-XM2,
Je suis d'accord avec toi.
C'est pour ça qu'en faisant : lround(x-0.5), on obtient systématiquement le nombre inférieur.
Je ne vois pas en quoi le cast en int génère une erreur. Cela tronquera juste le nombre. Donc, t'obtiendras également le nombre inférieur.
Le seul problème est que cela ne marche pas pour les dividendes négatifs. C'est pourquoi, il faut se faire soi-même la fonction.
-
-
pour être sur de parler de la même chose :
http://www.educationbug.org/a/division.html
dividende/diviseur=quotient.
donc floor(x/y) c'est pas ce qu'il y a de mieux ? après tout, rien ne dit qu'on doit transformer en entier.