Division float par float en c++

Fermé
joe amouz Messages postés 4 Date d'inscription mercredi 7 novembre 2012 Statut Membre Dernière intervention 10 mars 2013 - 25 févr. 2013 à 18:33
 joe amouz - 7 mars 2013 à 11:24
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.



A voir également:

4 réponses

armasousou Messages postés 1270 Date d'inscription dimanche 16 août 2009 Statut Membre Dernière intervention 30 décembre 2016 83
Modifié par armasousou le 28/02/2013 à 00:04
#include <math.h>

value = round(x);


et -lm dans gcc
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
28 févr. 2013 à 08:15
Armasousou,
Round () n'est pas standard en c++ et cela ne récupère que l'entier le plus proche : très différent du quotient...
Pour récupérer la partie entière pour les float, il fait le faire soit-même. 1 ligne ou 2
0
armasousou Messages postés 1270 Date d'inscription dimanche 16 août 2009 Statut Membre Dernière intervention 30 décembre 2016 83
28 févr. 2013 à 12:48
J'ai trouvé ca sur la doc c++ pourtant ^^
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
28 févr. 2013 à 18:24
T'as trouvé quoi ? Que c'était standard ? Ou que ça retourne le dividende ?
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
1 mars 2013 à 12:37
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.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
2 mars 2013 à 00:06
Char Snipeur,
il est standard C99, au moins.
On parle du C++, pas du C...
round() est standard ISO C99, mais pas standard C++.
Il le sera dans la prochaine version ISO de C++ qui intégrera une bonne partie du standard C99.
Mais en attendant, ce n'est pas standard C++...
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
28 févr. 2013 à 14:24
int(x/y);
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
28 févr. 2013 à 18:33
La fonction int () n'existe pas. Peut-être veux-tu parler du cast : (int) x/y ? Je doute que ça fonctionne pour les nombres négatifs.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
1 mars 2013 à 08:06
en C++ ça fonctionne très bien comme je l'ai écris. Sinon, il y a les fonctions de math sur les double : ceil et floor.
0
armasousou Messages postés 1270 Date d'inscription dimanche 16 août 2009 Statut Membre Dernière intervention 30 décembre 2016 83
1 mars 2013 à 11:54
ceil et floor renvoi l'entier le plus proche au dessous et dessus de la valeur, c'est pas un arrondi ^^

Mais à la limite, faire lafonction arrondir c'est pas compliqué ^^


Tu fait un modulo par 1.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
1 mars 2013 à 12:37
le modulo implique d'avoir des entiers, donc d'avoir déjà fait une approximation.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
1 mars 2013 à 22:03
Oui, et puis comme n'importe quel entier modulo 1 fait 0...
0
BOB-XM2 Messages postés 180 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 23 juillet 2013 65
4 mars 2013 à 01:20
faudra peut-être forcer le résultat à prendre la forme d'un entier:

float x,y;

cout<<(int)(x/y)<<endl;
0
stp BOB-XM2 ça ne risque pas de donner une valeur erronée du quotient ?
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
4 mars 2013 à 12:05
oui, si la réponse est plus grande que le MAX_INT.
Utilise lround.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
4 mars 2013 à 17:03
Non pas lround () ca arrondie à l'entier le plus proche... Rien à voir avec le quotient.
Ou alors lround (x/y -0.5).
0
BOB-XM2 Messages postés 180 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 23 juillet 2013 65
6 mars 2013 à 20:25
lround(x) pour x C [ 0, 0.5[ donne 0 et pour x C [0.5 , 1] donne 1
ca donnera un faut résultat

meme la conversion forcée en int peut générer une erreur, donc tu pourra convertir en un entier long ;)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
6 mars 2013 à 21:10
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.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
6 mars 2013 à 22:41
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.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
6 mars 2013 à 22:51
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.
Ben, l'énoncé initial : j'aimerais récupérer le quotient entier de la division d'un float par un float
Ca me paraît clair...
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
7 mars 2013 à 08:14
pas à moi. Tu peux très bien récupérer la partie entière du quotient dans un float.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
7 mars 2013 à 10:14
Ben ca revient au même. .. ou alors j'ai pas compris ta pensée.
0