Problème avec les nombres flottants
Résolu
maniqk
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
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
- [LibreOffice CALC] Comment faire une suite de nombres ✓ - Forum LibreOffice / OpenOffice
- Barbara veut calculer automatiquement son budget dans un tableau. citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). ✓ - Forum Excel
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