Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Operator '*' cannot be applied to operands of type 'double' and 'decimal'

Tags:

c#

I get this message in my program but i don't know how to fix it i have search on the net but don't find any thing that can help me.

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; 

Operator '*' cannot be applied to operands of type 'double' and 'decimal' is what comes up on Rate = Vat * Finalprice; and i don't know i can fix it

like image 538
user1152722 Avatar asked Jan 18 '12 00:01

user1152722


People also ask

Can you multiply a double by a decimal in C#?

You can't multiply a decimal by a double .

How do you multiply decimals in C#?

Multiply() Method in C# The Decimal. Add() method in C# is used to multiply two specified Decimal values.

What does M mean in decimal C#?

From the C# Annotated Standard (the ECMA version, not the MS version): The decimal suffix is M/m since D/d was already taken by double . Although it has been suggested that M stands for money, Peter Golde recalls that M was chosen simply as the next best letter in decimal .


2 Answers

Try this:

Rate = (decimal)Vat * Finalprice; 
like image 190
Junichi Ito Avatar answered Sep 21 '22 02:09

Junichi Ito


You need to cast one to the other. My guess is that both Price and all of your VAT rates should really be decimal - double isn't (usually) appropriate for dealing with any type of monetary values.

like image 32
Mark Brackett Avatar answered Sep 20 '22 02:09

Mark Brackett