Probleme de type numerique (operations entre eux)

Sannazzarotiti Messages postés 228 Date d'inscription jeudi 1 septembre 2005 Statut Membre Dernière intervention 12 avril 2009 - 10 avril 2007 à 13:08
Baguauda Messages postés 219 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 28 novembre 2008 - 10 avril 2007 à 20:33
Bonjour, j'essai de faire une fonction HT/TTC en C#. Voici les codes

PS: Je ne voit pas de balise
 
, donc désoler par la colorisation des codes

Code : C#
//Main.cs
usingSystem;

publicstaticvoid Main(string[] args)
{

        string Saisie = "";

        int Saisie_INT;

        decimal Saisie_DECIMAL;

       

        Saisie = Console.ReadLine(); //Recupere la saisie de l'utilisateur

        TypeTemps = Outil.IntOrDecimal(Saisie); //Type variable

       

        if(TypeTemps == "int")   

        {       

                Saisie_INT = int.Parse(Saisie);

                Saisie_DECIMAL = 0;

                Console.WriteLine( Outil.HT_TTC(Saisie_INT, 19.6));

        }

        elseif(TypeTemps == "decimal")         

        {       

                Saisie_INT = 0;

                Saisie_DECIMAL = decimal.Parse(Saisie);

                Console.WriteLine( Outil.HT_TTC(Saisie_DECIMAL, 19.6));

        }

        Outil.Pause();
}

Code : C#
//Outil.class.cs
class Outil
{

        publicstaticvoid Pause()

        {

                System.Console.Write("\n\nAppuyer sur "Entrée" pour quitter le programme");

                System.Console.ReadLine();

        }


               

        publicstaticdecimal HT_TTC(int PrixHT, double TVA)

        {

                decimal PrixTTC = 0;

                PrixTTC = PrixHT * TVA / 100;

                return PrixTTC;

        }


        publicstaticdecimal HT_TTC(decimal PrixHT, double TVA)

        {

                decimal PrixTTC = PrixHT * TVA / 100;

                return PrixTTC;

        }

        publicstaticstring IntOrDecimal(string Chaine)

        {

                string Resultat = "aucun";

                int INT;

                decimal DECIMAL;

               

                //Remplace le . par ,

                Chaine = Chaine.Replace('.', ',');

               

                if(int.TryParse(Chaine, outINT))

                {

                        Resultat = "int";

                }

                       

                elseif(decimal.TryParse(Chaine, outDECIMAL))

                {

                        Resultat = "decimal";

                }

               

                return Resultat;

        }
}

Erreurs :


Cannot implicitly convert type 'double' to 'decimal'. An explicit conversion exists (are you missing a cast?) (CS0266) - C:\Documents and Settings\Admin\Mes documents\SharpDevelop Projects\Compta Test\Outil.class.cs:13,13


Operator '*' cannot be applied to operands of type 'decimal' and 'double' (CS0019) - C:\Documents and Settings\Admin\Mes documents\SharpDevelop Projects\Compta Test\Outil.class.cs:19,21


En fait, pour convertir la saisie, je test si c'est un nombre a virgule
ou pas. Ensuite j'essai de le multiplier, c'est pour sa que j'ai
surcharger la fonction car la saisie peut etre int ou decimal mais j'ai
toujours une erreur. Voila j'espere que vous pouvez m'aider (j'ai virer
ce qui etez inutile pour rendre le code plus clair).


Merci a tous d'avance.

1 réponse

Baguauda Messages postés 219 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 28 novembre 2008 1
10 avril 2007 à 20:33
1- essaye de travailler avec les même type.
2 - sinon transtype per ex : PrixTTC = PrixHT * (decimal) TVA / 100;
3 - utilise des constante cela te permet de choisir toi même le type, et ne pas laisser le compilateur choisir
ex public const double TVA =  19.6;
Rejoignez-nous