【问题标题】:Operator '*' cannot be applied to operands of type 'double' and 'decimal'运算符“*”不能应用于“double”和“decimal”类型的操作数
【发布时间】:2012-01-18 00:28:32
【问题描述】:

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

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

【问题讨论】:

  • 如果您有十进制类型并想将其用于任何计算,只需在该数字后添加 M 例如:1+0.15M

标签: c#


【解决方案1】:

试试这个:

Rate = (decimal)Vat * Finalprice;

【讨论】:

    【解决方案2】:

    您需要将一个转换为另一个。我的猜测是,价格和所有增值税率都应该是小数 - 双精度(通常)不适合处理任何类型的货币价值。

    【讨论】:

    【解决方案3】:

    也将foodVATRate 更改为decimal。似乎没有任何理由让它翻倍。

    【讨论】:

      【解决方案4】:

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

      decimal 类型被设计用于财务计算,因为它提供了高精度,但以字节为单位减小了类型大小的范围。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-03
        • 1970-01-01
        • 2023-04-07
        • 2019-08-23
        • 2015-08-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多