运营商' *'不能应用于' double'类型的操作数和'十进制'

时间:2012-01-18 00:28:33

标签: c#

我在程序中收到此消息,但我不知道如何修复它我在网上搜索但找不到任何可以帮助我的东西。

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;我不知道我能解决它

4 个答案:

答案 0 :(得分:15)

你需要将一个投射到另一个。我的猜测是,价格和所有增值税税率都应该是十进制的 - 双倍(通常)不适合处理任何类型的货币价值。

答案 1 :(得分:11)

试试这个:

Rate = (decimal)Vat * Finalprice;

答案 2 :(得分:4)

也将foodVATRate更改为decimal。似乎没有任何理由使它成为双倍。

答案 3 :(得分:4)

您无法将decimal乘以double。您可以通过类型转换来解决此问题,但您可能只想坚持使用decimal来处理所有价格和增值税税率。

类型decimal旨在用于财务计算,因为它提供了高精度,代价是减少了字节大小的范围。