2016-08-12 82 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在這種情況下,但它需要一個初始值。

相關問題