Reputation: 943
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
Upvotes: 50
Views: 106027
Reputation: 179
in my case I used M at the end of decimal number and its work
string performance = dgvResult.Rows[i].Cells[9].Value.ToString();
string sdi = dgvResult.Rows[i].Cells[6].Value.ToString();
if (Convert.ToDecimal(sdi) >= 1.1M && Convert.ToDecimal(sdi) <= 1.5M)
{
dgvResult.Rows[i].Cells[9].Value = 2;
}
Upvotes: 1
Reputation: 12978
You can't multiply a decimal
by a double
. You can fix this by type casting, but you probably just want to stick with using decimal
for all prices and VAT rates throughout.
The type decimal
was designed to be useful for financial calculations since it offers high precision at the cost of reduced range for the size of the type in bytes.
Upvotes: 5
Reputation: 85655
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.
Upvotes: 19
Reputation: 40150
Change foodVATRate
to decimal
, too. There doesn't seem to be any reason for it to be double.
Upvotes: 4