C#操作符'*'不能应用于'double'和'decimal'类型的操作数
一些错误我很努力去理解。我正在尝试制作销售税计算器。但由于我不能乘以十进制小数,因此不断出现操作错误。这是我为我的calulate按钮的代码:C#操作符'*'不能应用于'double'和'decimal'类型的操作数
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();
谢谢。但现在我得到一个错误,说decTax是未分配的.. –
你需要首先声明变量,然后为它们分配它们的默认值..将它们分配为'0.00'或'0' – MethodMan
...因为它是未分配的。你应该在使用前初始化你的变量。 –
错误正是它所说的。你不能乘以你的文字双倍0.06D的小数。之所以你不能这么做,是因为将decimal
转换为double
会导致精度的下降。如果存在丢失精度的可能性,编译器将不会进行自动转换。
尝试强制转换为十进制太:
decTax = ((decimal)0.06 * (decOrder + decTax));
或者你可以使用m
后缀,以表明你的文字是一个小数,而不是双:
decTax = 0.06m * (decOrder + decTax));
但是请注意,在您的问题中发布的代码中,您从未将初始值分配给decTax
。所以decOrder + decTax
无法计算。目前还不清楚你的意图是decTax
在这种情况下,但它需要一个初始值。
也不知道为什么我的代码键入如此。我为这样一个新手问题表示歉意,但嘿,即时学习。 –
my line:decTax =(0.06D *(decOrder + decTax)); 得到不能使用“*”作为双倍或小数的操作错误 –