Condition sur un float ?
Résolu
Rodd
-
Rodd -
Rodd -
Bonjour,
Pour un TP d'informatique je dois faire plusieurs petits exercices.
Pour ne pas avoir a créer autant de .c que d'exercices, j'ai créé une sorte de menu dans le main qui exécute chaque exercice comme une fonction.
Certain exercice ont des variantes (ici le 13), j'ai donc créer des fonction
Le probleme est le suivant : quand j'entre au clavier 8, la fonction
j'ai essayé d'écrire
Je ne vois pas du tout pourquoi cela ne fonctionne pas alors que la variable
Si quelqu'un a une explication, ou une solution a mon problème je lui en serais très reconnaissant.
Merci beaucoup.
Pour un TP d'informatique je dois faire plusieurs petits exercices.
Pour ne pas avoir a créer autant de .c que d'exercices, j'ai créé une sorte de menu dans le main qui exécute chaque exercice comme une fonction.
int main() { float exo=0.0; printf("Choissez l'exercice (de 8 a 25)\n"); scanf("%f", &exo); if(exo==8) exo8(); else if(exo==9) exo9(); [...] else if(exo==13.1) exo13_1(); else if(exo==13.2) exo13_2(); else if(exo==14) exo14();
Certain exercice ont des variantes (ici le 13), j'ai donc créer des fonction
exo13_1()et
exo13_2().
Le probleme est le suivant : quand j'entre au clavier 8, la fonction
exo8()se lance, mais quand j'entre 13.1 (ou 13.2) la fonction exo13_1() n'est pas appelée par le main().
j'ai essayé d'écrire
13.1,
13,1.
Je ne vois pas du tout pourquoi cela ne fonctionne pas alors que la variable
exoest bel et et bien de type
float.
Si quelqu'un a une explication, ou une solution a mon problème je lui en serais très reconnaissant.
Merci beaucoup.
A voir également:
- Float condition
- Excel cellule couleur si condition texte - Guide
- Excel condition ou - Guide
- Excel soustraction avec condition ✓ - Forum Excel
- Excel champ calculé avec condition - Forum Excel
- Nbval avec condition - Forum Excel
2 réponses
Un float n'est pas un nombre aussi clair que 13.1, il peut valoir 13.10001 par exemple, ce qui n'est pas == à 13.1.
De base on évite les égalité stricte sur des flottants, par exemple :
(1/5)!=0.2 car 1/5 ne sera pas 0.2, mais 0.19999 par exemple.
2 solutions :
- Changer la méthode de saisie
- utiliser une comparaison plutôt :
if(exo>13.05 && exo <13.15)
par exemple.
J'interviens principalement en VB6 et VB.NET, avec un peu de C#, mais la modération m'amène souvent sur d'autre langages.
En VB.NET pensez à activer "Option Explicit" et "Option Strict"
De base on évite les égalité stricte sur des flottants, par exemple :
(1/5)!=0.2 car 1/5 ne sera pas 0.2, mais 0.19999 par exemple.
2 solutions :
- Changer la méthode de saisie
- utiliser une comparaison plutôt :
if(exo>13.05 && exo <13.15)
par exemple.
J'interviens principalement en VB6 et VB.NET, avec un peu de C#, mais la modération m'amène souvent sur d'autre langages.
En VB.NET pensez à activer "Option Explicit" et "Option Strict"