我正在努力理解一些错误。我正在尝试制作销售税计算器。但是不断得到操作错误,因为我不能将小数乘以十进制。这是我的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();
答案 0 :(得分:4)
错误正是它所说的。您不能将小数乘以文字双精度0.06D。您无法隐式执行此操作的原因是因为将decimal
转换为double
会导致精度损失。如果有可能失去精度,编译器不会进行自动转换。
尝试将其转换为小数:
decTax = ((decimal)0.06 * (decOrder + decTax));
或者您可以使用m
后缀来表示您的文字是小数而不是双数:
decTax = 0.06m * (decOrder + decTax));
但请注意,在您在问题中发布的代码中,您从未为decTax
分配初始值。因此无法计算decOrder + decTax
。从您的问题中不清楚您在这种情况下的意图decTax
,但它需要一个初始值。
答案 1 :(得分:1)