Оператор '*' не может применяться к операндам типа 'double' и 'decimal' - программирование
Подтвердить что ты не робот

Оператор '*' не может применяться к операндам типа 'double' и 'decimal'

Я получаю это сообщение в своей программе, но я не знаю, как его исправить. У меня есть поиск в сети, но не найти ничего, что могло бы мне помочь.

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;

Оператор '*' не может применяться к операндам типа "double" и "decimal" - это то, что появляется на Rate = Vat * Finalprice; и я не знаю, могу ли я это исправить.

4b9b3361

Ответ 1

Вам нужно отбросить один на другой. Я полагаю, что и цена, и все ваши ставки НДС должны быть действительно десятичными - двойная (обычно) не подходит для работы с любыми денежными значениями.

Ответ 2

Измените foodVATRate на decimal. Кажется, нет никаких причин для его удвоения.

Ответ 3

Попробуйте следующее:

Rate = (decimal)Vat * Finalprice;

Ответ 4

Вы не можете умножить decimal на double. Вы можете исправить это путем литья типа, но вы, вероятно, просто захотите использовать decimal для всех цен и ставок НДС.

Тип decimal был разработан, чтобы быть полезным для финансовых расчетов, поскольку он предлагает высокую точность за счет уменьшения диапазона для размера тип в байтах.