39 votes

L'opérateur '*' ne peut pas être appliqué aux opérandes de type 'double' et 'décimal'

Je reçois ce message dans mon programme, mais je ne sais pas comment le réparer. J'ai une recherche sur le net, mais je ne trouve rien qui puisse m'aider.

private double Price;
private int Count;
private double Vat;

private const double foodVATRate = 0.12, otherVATRate = 0.25;
private decimal Finalprice;
private decimal Rate;

public void Readinput()
{
    Finalprice = (decimal)(Price * Count);
}

private void cal()
{
    char answer = char.Parse(Console.ReadLine());
    if ((answer == 'y') || (answer == 'Y'))
        Vat = foodVATRate;
    else
        Vat = otherVATRate;

    Rate = Vat * Finalprice;

L'opérateur '*' ne peut pas être appliqué aux opérandes de type 'double' et 'décimal' est ce qui apparaît sur Rate = Vat * Finalprice ; et je ne sais pas si je peux le réparer

19voto

Mark Brackett Points 46824

Il faut que tu jettes l'un à l'autre. Je suppose que le prix et tous vos taux de TVA devraient vraiment être décimaux - le double n'est (habituellement) pas approprié pour traiter avec n'importe quel type de valeurs monétaires.

18voto

Junichi Ito Points 528

Essayez ceci :

Rate = (decimal)Vat * Finalprice;

4voto

Andrew Barber Points 25990

Changez aussi foodVATRate decimal. Il ne semble pas y avoir de raison pour que ce soit double.

4voto

Ergwun Points 5293

Vous ne pouvez pas multiplier un decimal par un double. Vous pouvez résoudre ce problème par moulage de type, mais vous voulez probablement vous en tenir à l'utilisation de decimal pour tous les prix et taux de TVA.

Le type decimal a été conçu pour être utile pour les calculs financiers car il offre une grande précision au prix d'une plage réduite pour la taille du type en octets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X