2016-08-12 80 views
1

一些错误我很努力去理解。我正在尝试制作销售税计算器。但由于我不能乘以十进制小数,因此不断出现操作错误。这是我为我的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(); 
+0

也不知道为什么我的代码键入如此。我为这样一个新手问题表示歉意,但嘿,即时学习。 –

+0

my line:decTax =(0.06D *(decOrder + decTax)); 得到不能使用“*”作为双倍或小数的操作错误 –

回答

1

D意味着DoubleDecimal使用M

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

有关更多信息,请参阅此documentation

+0

谢谢。但现在我得到一个错误,说decTax是未分配的.. –

+0

你需要首先声明变量,然后为它们分配它们的默认值..将它们分配为'0.00'或'0' – MethodMan

+0

...因为它是未分配的。你应该在使用前初始化你的变量。 –

4

错误正是它所说的。你不能乘以你的文字双倍0.06D的小数。之所以你不能这么做,是因为将decimal转换为double会导致精度的下降。如果存在丢失精度的可能性,编译器将不会进行自动转换。

尝试强制转换为十进制太:

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

或者你可以使用m后缀,以表明你的文字是一个小数,而不是双:

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

但是请注意,在您的问题中发布的代码中,您从未将初始值分配给decTax。所以decOrder + decTax无法计算。目前还不清楚你的意图是decTax在这种情况下,但它需要一个初始值。

相关问题