Problème avec les nombres flottants
Résolu
maniqk
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un petit problème avec les nombres flottants, je n'arrive pas à comprendre pourquoi le code suivant ne me fournit pas ce que je veux :
Dans la console j'obtiens "c = 3.00000".
Pourquoi n'ai-je pas c = 3.33333 ?
Merci d'avance
J'ai un petit problème avec les nombres flottants, je n'arrive pas à comprendre pourquoi le code suivant ne me fournit pas ce que je veux :
int main(void){ int a = 10; int b = 3; float c = a/b; printf("c = %f",c); return 0;
Dans la console j'obtiens "c = 3.00000".
Pourquoi n'ai-je pas c = 3.33333 ?
Merci d'avance
A voir également:
- Problème avec les nombres flottants
- Code binaire des nombres - Guide
- Nombres faciles - Télécharger - Outils professionnels
- Citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). - Forum Excel
- Excel afficher les 0 devant un nombre - Guide
- Nombre de combinaison possible avec 3 chiffres - Forum Réseaux sociaux
5 réponses
J'ai reçu ton post mais je ne le vois pas, tu l'as peut être supprimé, en tout cas merci de ta réponse rapide.
Cependant, là j'ai simplifié mon programme..
En fait je définis mes "int" ci-dessus dans des directives #define en début de fichier, donc je ne déclare pas le type de mes variables...
Cependant, là j'ai simplifié mon programme..
En fait je définis mes "int" ci-dessus dans des directives #define en début de fichier, donc je ne déclare pas le type de mes variables...
Ok je vais parler tout seul mais du coup j'ai trouvé... Je laisse la question pour ceux qui se poseraient des questions !
-> Il suffisait d'écrire #define a 10.000000 au lieu de #define a 10 ...
-> Il suffisait d'écrire #define a 10.000000 au lieu de #define a 10 ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Un peu de précision pour comprendre.
int a = 10;
int b = 3;
float c = a/b;
Il s'agit d'une division d'entiers (a et b sont des int). En C, une division d'entier retourne la valeur entière. Donc 3. Peu importe que c soit de type float.
Plusieurs solutions. Par exemple :
1/ Utiliser au moins un float : float a=10; int b=3; float c=a/b;
2/ Convertir en float : int a=10; int b=3; float c=(a+.0f)/b; ainsi a est converti en float (somme d'un float et d'un int).
3/ Cast : int a=10; int b=3; float c=(float)a/b;
Sinon, je te conseille de plutôt utiliser des doubles.
int a=10; int b=3; double c=(double) a/b;
printf("c=%f\n",c);
Google is your friend
Un peu de précision pour comprendre.
int a = 10;
int b = 3;
float c = a/b;
Il s'agit d'une division d'entiers (a et b sont des int). En C, une division d'entier retourne la valeur entière. Donc 3. Peu importe que c soit de type float.
Plusieurs solutions. Par exemple :
1/ Utiliser au moins un float : float a=10; int b=3; float c=a/b;
2/ Convertir en float : int a=10; int b=3; float c=(a+.0f)/b; ainsi a est converti en float (somme d'un float et d'un int).
3/ Cast : int a=10; int b=3; float c=(float)a/b;
Sinon, je te conseille de plutôt utiliser des doubles.
int a=10; int b=3; double c=(double) a/b;
printf("c=%f\n",c);
Google is your friend