Code de double.tryparse

Fermé
davidhazak - Modifié par Whismeril le 11/05/2015 à 23:03
 Utilisateur anonyme - 11 mai 2015 à 23:36
Bonjour,
voila j'ai un exercice ou il faut ecrire un code qui a la fonction que le double.tryparse j'ai un probleme avec la virgule ou le point que je n'arrive pas a faire en sorte que le programme ne le reconnaisse pas comme une erreur pouvez vous m'aidez voici mon code:
  static void Main(string[] args)
        {
            Console.WriteLine("Please insert a string:");
            string strToParse = Console.ReadLine();

            double numberAfterParsing;

            if (ParseDouble(strToParse, out numberAfterParsing))
            {
                Console.WriteLine("Success. The number is: " + numberAfterParsing.ToString());
            }
            else
            {
                Console.WriteLine("You didn't enter a number");
            }

            Console.ReadLine();
              }
                private static bool ParseDouble(string str, out double  result)
              {
                    if (!String.IsNullOrEmpty(str))
                       {
              
                double finalNumber = 0;
                for (int i = 0; i < str.Length; i++)
                         {
                    if (str[i] >= '0' && str[i] <= '9')
                          {
                        double  currentNumber = str[i] - '0';

                        //finalNumber *= 10;
                        finalNumber = finalNumber * 10;
                        finalNumber += currentNumber;
                    }
                    else if (str[i] == '.')
                    {
                        
                        Console.WriteLine(str[i]);
                       
                        double currentNumber = str[i];
                        finalNumber = finalNumber / 10;
                        finalNumber += currentNumber;
                    }
                    else
                    {
                        result = 0;
                        return false;
                    }

                }

                result = finalNumber;
                return true;
            }

            else
            {
                result = 0;
                return false;



merci de votre aide.

EDIT: Ajout de la coloration syntaxique.
A voir également:

1 réponse

Utilisateur anonyme
11 mai 2015 à 23:36
Bonsoir,

un code qui a la fonction que le double.tryparse

manquerait il le mot "même"?

Quand on exécute ton code en pas à pas tout va bien tant que le nombre est avant la virgule (ou le point).
Le point, ne se calcule pas, ce que fait ton code c'est de diviser par 10 la partie entière qui était juste (jusque là) et d'y ajouter 46.

Non la détection de la virgule devrait être une frontière.
Avant cette frontière, traitement de la partie entière, ça c'est impec.
Après cette frontière, traitement de la partie décimale, à faire.
Juste sur la frontière, décision de faire autrement.
0