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
joe amouz - 7 mars 2013 à 11:24
A voir également:
- Division float par float en c++
- Microsoft skype division - Télécharger - Téléphonie & Visio
- Division euclidienne ti 83 - Forum calculatrices
- Diviser une page word en 4 ✓ - Forum Matériel & Système
- Division en c - Forum C
- Diviser un pdf en plusieurs pdf - Guide
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
Modifié par armasousou le 28/02/2013 à 00:04
#include <math.h>
value = round(x);
et -lm dans gcc
value = round(x);
et -lm dans gcc
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
28 févr. 2013 à 14:24
int(x/y);
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
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.
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
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.
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
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.
Mais à la limite, faire lafonction arrondir c'est pas compliqué ^^
Tu fait un modulo par 1.
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
1 mars 2013 à 12:37
le modulo implique d'avoir des entiers, donc d'avoir déjà fait une approximation.
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
1 mars 2013 à 22:03
Oui, et puis comme n'importe quel entier modulo 1 fait 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
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;
float x,y;
cout<<(int)(x/y)<<endl;
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
4 mars 2013 à 12:05
oui, si la réponse est plus grande que le MAX_INT.
Utilise lround.
Utilise lround.
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
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).
Ou alors lround (x/y -0.5).
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
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 ;)
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 ;)
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
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.
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.
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
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.
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.
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
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...
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...
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
7 mars 2013 à 08:14
pas à moi. Tu peux très bien récupérer la partie entière du quotient dans un float.
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
7 mars 2013 à 10:14
Ben ca revient au même. .. ou alors j'ai pas compris ta pensée.
28 févr. 2013 à 08:15
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
28 févr. 2013 à 12:48
28 févr. 2013 à 18:24
1 mars 2013 à 12:37
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.
2 mars 2013 à 00:06
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++...