division d un float - C++ - Programmation
Marsh Posté le 15-04-2005 à 09:46:45
[quote]float a, b, c;
a= b/c;
or il me donne la partie entiere de b divisé par c! [/fixed]
Marsh Posté le 15-04-2005 à 09:49:53
ben je sais vu qu il me met la partie entiere mais que dois je mettre alors????
Marsh Posté le 15-04-2005 à 10:03:14
Ce que taz essaie de dire (je traduis )
c'est que a=b/c; devrait donner la division d'un flottant par un autre flottant. Enfin si a b et c sont bien déclarés comme flottants.
Donc ton erreur doit venir d'un autre endroit de ton code.
Est-ce que tu es sur de ne pas tronquer b avant ?
Marsh Posté le 15-04-2005 à 10:18:59
treza22 a écrit : Bonjour, |
Nan, ça, ça ne donne rien, ça fait juste un calcul: c'est le soleil qui donne.
Tu dois sans doute afficher ce résultat à un moment donné, et il est donc probable que ton affichage soit légèrement érroné.
Marsh Posté le 15-04-2005 à 10:24:49
Ha ok ca y est ca marche mais c est vraiment galere: ne pas pouvoir avoir un float quand on divise 2 entiers c est pas normal!
Mais bon c est les defaults du C et puis voila!
Je vous remercie tous les deux dans tous les cas!
Bye
Marsh Posté le 15-04-2005 à 10:29:19
treza22 a écrit : Ha ok ca y est ca marche mais c est vraiment galere: ne pas pouvoir avoir un float quand on divise 2 entiers c est pas normal! |
c'est quand même ce qui se passe en C, C++, Java....
Marsh Posté le 15-04-2005 à 10:36:44
treza22 a écrit : |
bah faisons une petition
renseignes toi sur le typage dans les langages et tu verras que c'est pas si trivial ...
Marsh Posté le 15-04-2005 à 10:58:31
treza22 a écrit : Ha ok ca y est ca marche mais c est vraiment galere: ne pas pouvoir avoir un float quand on divise 2 entiers c est pas normal! |
ce n'est pas un defaut, la division d'un entier par un autre c'est une division euclidienne qui retourne naturellement un quotient et un reste
Marsh Posté le 15-04-2005 à 11:08:54
sache que la division pour les entiers renvoie un entier. puis dans ton cas, il fait la conversion (de la division entière) en flotant, c'est tout à fait normal. La division entière n'a rien à voir (entre guillemets) avec la division pour floattant
Mais par abus de notation on utilise le meme signe "/". Mais si tu tiens ant queçà à avoirun signe différent je te conseille OCAML qui utilise le signe "/" pour la division d'entier et "./" pour la division floattant en sachant que "a./b" si a et b sont des entiers ben çà plante
Bon alors avant de dire c'est pas normal, vérifie ce que tu dis.
Marsh Posté le 15-04-2005 à 19:43:51
treza22 a écrit : Ha ok ca y est ca marche mais c est vraiment galere: ne pas pouvoir avoir un float quand on divise 2 entiers c est pas normal! |
C'est pas un défaut, c'est standard
Si tu écrits "float a=7/3"; le C calcule d'abord "7/3" dans le typage le plus large de ces deux constantes (à savoir int) et met le résultat dans un flottant
Si tu veux diviser en flottant, utilise la notation "constante float" => t'as plein de possibilités
float a=7.0/3;
float a=7/3.0;
float a=7.0/3.0;
float a=(float)7/3;
etc etc
Le C prendra le typage le plus large pour faire la division
PS: C'est un topic C, pas C++
Marsh Posté le 15-04-2005 à 09:28:57
Bonjour,
J ai une petite question: comment on fait une division d un reel en C++?
J ai utilisé
float a, b, c;
a= b/c;
or il me donne la partie entiere de b divisé par c!
Quelqu un sait comment récupérer la valeur réelle de a?
Merci d avance