Programmation C#, calcul avec virgule ( calcul IMC )

Résolu/Fermé
Hiitaf19 Messages postés 22 Date d'inscription vendredi 17 juin 2016 Statut Membre Dernière intervention 4 octobre 2019 - 17 juin 2016 à 18:22
Hiitaf19 Messages postés 22 Date d'inscription vendredi 17 juin 2016 Statut Membre Dernière intervention 4 octobre 2019 - 17 juin 2016 à 19:50
Bonjour,

Je voudrais savoir comment réaliser un calcul avec virgule via Visual Studio

Par exemple:

Je récupère la taille et le poids et je fais le calcul :

string poids = Console.ReadLine();
string taille = Console.ReadLine();

int tailleInt = int.Parse(taille);
int poidsInt = int.Parse(poids);
int IMC = poidsInt/(tailleInt * 2);

Console.Write(" Votre imc: " + IMC)

Mais ça ne fonctionne pas quand je mets des virgules.
Après plusieurs recherches j'ai trouvé Convert.ToDouble mais je ne sais pas comment l'utiliser !
Merci d'avance pour vos réponses.

1 réponse

Whismeril Messages postés 17806 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 septembre 2022 860
17 juin 2016 à 18:43
Bonsoir

tout d'abord, ta question montre que tu débutes, mais comme beaucoup en zappant les bases.
Le meilleur conseil que je puisse te donner est de "perdre" quelques jours à suivre ce cours
https://tahe.developpez.com/dotnet/csharp/ et ainsi gagner énormément de temps pour le reste de ta vie.
Tu peux me croire, moi aussi je me suis cru assez malin pour zapper les bases, jusqu'au jour ou....


int ça veut dire nombre entier codé sur 32 bits, donc on y rentre forcément un nombre entier.

double est l'un des types qui peuvent recevoir un nombre décimal.

La classe Convert est effectivement une solution, elle sert à convertir d'un type vers l'autre à la condition que la conversion soit:
  • possible, par exemple le texte "true" sera convertible en bool true, mais pas le texte "Bonjour"
  • que le format soit le bon, par exemple si ton PC est configuré à la française avec l'espace comme séparateur des milliers le texte "1 234,567" pourra être converti en double, mais pas le texte "1,234.567" ni même "1234.567", sauf à préciser à Convert quel est le format d'entrée.


Exemple
            double nombre = Convert.ToDouble("1 234,567");
            double nombre2 = Convert.ToDouble("1234.567", CultureInfo.InvariantCulture);


Il faut donc savoir à l'avance quel sera le format des nombres en entrée.
Il y a moyen bien sûr de gérer tous les cas de figures, mais ça n'est pas encore de ton niveau.

Une autre façon de faire est d'utiliser TryParse, qui retourne true si la conversion est possible, et un paramètre avec modificateur out retournant le résultat quand c'est possible

            double nombre3;
            bool EstCePossible = double.TryParse("1234.567", out nombre3);



-1
Hiitaf19 Messages postés 22 Date d'inscription vendredi 17 juin 2016 Statut Membre Dernière intervention 4 octobre 2019
17 juin 2016 à 18:55
Je te remercie pour ta réponse, je vais suivre le cours, et oui en effet j'ai débuté hier soir.
Je comprends pas totalement les exemples mais ca devrait aller mieux une fois que j'aurais vu le cours merci encore !
0
Whismeril Messages postés 17806 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 septembre 2022 860
17 juin 2016 à 19:06
normalement oui, même si le cours ne fait pas le tour complet de C#, il est très bien
0
Hiitaf19 Messages postés 22 Date d'inscription vendredi 17 juin 2016 Statut Membre Dernière intervention 4 octobre 2019
17 juin 2016 à 19:50
Ca marche. ;)
0