2016-10-19 53 views
0

每次我運行它時,它都將向下舍入num13,這不是我想要的。我希望它舍入到小數點後兩位。如何將其整數轉換爲小數點後兩位,以便如果輸入正確的答案,例如10/4 == 2.50,那麼if (num12 == num13)將評估爲true?目前num13的評估結果爲2,而不是預期的2.5。C#變量自動舍入,而它被設置爲舍入到2位小數

Random NumberGen = new Random(); 
start6: 
    int num10 = NumberGen.Next(1, 11); 
    int num11 = NumberGen.Next(1, 11); 

start5: 
    if (num10 > num11) 
    { 
     Console.Write(num10 + "/" + num11 + " = "); 
     decimal num12; 
     num12 = Convert.ToDecimal(Console.ReadLine()); 
     num12 = Math.Round(num12, 2); 
     decimal num13; 
     num13 = num10/num11; 
     num13 = Math.Round(num13, 2); 
     if (num12 == num13) 
     { 
      Console.Clear(); 
      goto start; 
     } 
     else 
     { 
      Console.WriteLine("wrong answer, try again."); 
      goto start5; 
     } 
    } 
    else 
    { 
     goto start6; 
    } 
+0

[documentation](https://msdn.microsoft.com/en-us/library/aa691373(v = vs.71).aspx)是你的朋友。 –

+1

整數除法...'10/4 = 2'因爲餘數被截斷時除以整數。 –

+1

爲什麼你在c#中使用goto語句?!? – YuvShap

回答

0

你必須初始化num10和num11爲十進制或雙打開始,當您計算兩個整數你會得到一個整數值。

2

由於驚人的,因爲它聽起來,

decimal a = 10/4; 

將產生2,不2.5。這是因爲/運營商,如果兩個操作數(104)爲整數執行整數除法

當你把兩個整數,結果始終是整數。 (來源:MSDN):

decimal num13; 
num13 = (decimal)num10/num11; 

(雖然你在

在你的情況,這可以通過確保您的一個操作數爲不是整數固定它:請考慮讓你的變量名稱更具描述性。)

+0

你建議同樣的答案,但在我之前:( –

0
decimal num13; 
num13 = (decimal)num10/num11; 
0

in o ne line

decimal num13= Math.Round((decimal)num10/num11, 2);