C#运算符'*'不能应用于'double'和'decimal'类型的操作数

时间:2016-08-12 19:26:12

标签: c#

我正在努力理解一些错误。我正在尝试制作销售税计算器。但是不断得到操作错误,因为我不能将小数乘以十进制。这是我的calulate按钮的代码:

decimal decTax;
decimal decTotal;
string input;
decimal decOrder;
// Accept the order from the Console window
Console.Write("Enter order in dollars: $");
input = Console.ReadLine();
Decimal.TryParse(input, out decOrder);

// Calculate the sales tax
decTax = (0.06D  * (decOrder + decTax));
decTotal = (decOrder + decTax);
// Write the results to the Console Window
Console.WriteLine();
Console.WriteLine("The Total is " & decTotal.ToString("c"));
Console.ReadLine();

2 个答案:

答案 0 :(得分:4)

错误正是它所说的。您不能将小数乘以文字双精度0.06D。您无法隐式执行此操作的原因是因为将decimal转换为double会导致精度损失。如果有可能失去精度,编译器不会进行自动转换。

尝试将其转换为小数:

decTax = ((decimal)0.06 * (decOrder + decTax));

或者您可以使用m后缀来表示您的文字是小数而不是双数:

decTax = 0.06m * (decOrder + decTax));

但请注意,在您在问题中发布的代码中,您从未为decTax分配初始值。因此无法计算decOrder + decTax。从您的问题中不清楚您在这种情况下的意图decTax,但它需要一个初始值。

答案 1 :(得分:1)

D表示Double Decimal使用M

decTax = (0.06M  * (decOrder + decTax));

有关详细信息,请参阅此documentation