Division en C [Fermé]

Signaler
-
 hdsafkjhga -
float variable;

variable = 1/8;
printf("%f\n", variable);

Pourquoi il m'affiche 0 au lieu de 0.125 ?

Merci

6 réponses

Messages postés
564
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
30 octobre 2005
112
Salut,
Grosso modo en C quand tu divises 2 entiers tu obtient un quotient entier qui est une valeur approchée du quotient exact.
Ce qui fait 0 dans ton cas, pour obtenir le quotient exact il faut écrire 1.0/8 ou bien 1/8.0, c'est comme ça.

A++

C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
9
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 93727 internautes nous ont dit merci ce mois-ci

Merci bien!
Messages postés
1766
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
17 novembre 2010
27
Salut,
A la limite (long)1/(long)8 aussi je crois...
Plus pratique dans le cas de variables...

Le TeebObeeT ignoré de la moche...
Ah oui c'est vrai le .0, j'oubliais.
Merci à vous 2.
je c'est plus fair des divis a 2 chifre et je suis en cm2
Messages postés
327
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
41
vas voir ce site : http://classe9.free.fr/spip.php?article831

je pense que cela peut t'aider et à cette heure ci tu ne devrait pas etre sur un ordinateur, mais en train de travailler.

Tchû
il faut tt simplement ecrir

printf( " la variable est : %.3f ", variable);

le %.3 désigne 3 nombre aprés la virgule

bonne chance
Messages postés
21801
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 674
Non. Si tu mets %.3f, t'obtiendras 0.000.
La bonne raison a déjà été donnée. Il faut mettre variable=1.0/8; ou variable=(float)/8;
faut declarer les variables autant que float ;
Messages postés
21801
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 674
Sauf que 1 et 8 ne sont pas des variables... Mais la solution a déjà été donnée il y a 8 ans ;-)))