2013-02-07 23 views
-1

好吧,我創建了這個自動售貨機應用程序表單,並且在擺脫這個改變時遇到問題。該機器在一天開始時有50個10便士。碳酸飲料的價格爲40便士,因此,如果用戶輸入50便士,他將得到10便士的變化。我有一個文本框顯示機器中的10p數量,所以在開始時,50,在投入50p之後,它將是55.然而,現在他必須得到10p的更改(我有一個版本更改按鈕),我想要在文本框中的10p的數量去54 ...任何想法?我試着用mod運算符,但不知道如何使用它:使用mod運算符減少文本框中的值

 decimal change = decimal.Parse(txtChange.Text) 

     if (change % 10 > 1) 
     { 
      int tenPenny = int.Parse(txt_BoxTenPenny.Text); 
      int totalTenPen = tenPenny - 1; 
      txt_BoxTenPenny.Text = totalTenPen.ToString(); 
     } 

我知道這是不對的,當我在做研究,他們使用%運算符和使用數字10作爲分子......我有點失落了。任何建議都會很棒!

+1

如果他所說的50P,怎麼做的5個10馬力增加多少?你是說用戶在10秒內輸入50p?如果是這樣,這個改變是無關的,因爲你可以拒絕多餘的,因此,這個任務也是如此。 –

+0

如果他們把50p放在你沒有55你還有50. –

+1

那就是整數除法運算符。所以如果x是非負整數,x%10給出x的最後一個數字。 –

回答

0

類似的東西:

decimal change = decimal.Parse(txtChange.Text) 

    if (change % 10 > 0) 
    { 
     int tenPenny = int.Parse(txt_BoxTenPenny.Text); 
     int totalTenPen = tenPenny - (change % 10); 
     txt_BoxTenPenny.Text = totalTenPen.ToString(); 
    } 

但是假設在這之前,你已經添加了用戶付諸機在txt_BoxTenPenny 50便士。

0

如果你想確定用戶是多少10個便士拖欠,這是用計算:

int tenPennies = change/10 

而不是在模數(%)經營者,所以:

decimal change = decimal.Parse(txtChange.Text) 

    int tenPenny = int.Parse(txt_BoxTenPenny.Text); 
    int totalTenPen = tenPenny - change/10 ; 
    txt_BoxTenPenny.Text = totalTenPen.ToString(); 

希望有幫助!

0

模運算符(%)返回除法運算的餘數。例如,23 MOD 10 = 3

在這種情況下,我相信你想要整數除法或Floor。也就是說,你想劃分並拋棄剩下的部分。

由於您使用的是decimal,我推測change將包含0.10 10p。在這種情況下,請嘗試以下操作:

//calculate the number of 10p coins you will get for change 
var tenPenniesChange = (int)Math.Floor(change/0.10m); 

if(tenPenniesChange > 0) 
    txt_BoxTenPenny.Text = (int.Parse(txt_BoxTenPenny.Text) - tenPenniesChange).ToString(); 

change -= tenPenniesChange * 0.10; 

請注意使用Math.Floor函數。如果您有change = 0.13,您將獲得tenPenniesChange = 1。減法後,您將獲得change = 0.03