C# 使用mod运算符减少文本框中的值
好的,我已经创建了这个自动售货机申请表,但我在处理更改时遇到了问题。这台机器在一天开始时有50个10便士的进帐。一杯汽水的价格是40便士,因此,如果用户投入50便士,他将得到10便士的找零。我有一个文本框显示机器中10便士的数量,所以在开始时,50便士,在他输入50便士后,它将是55便士。然而,现在他必须得到10便士的零钱(我有一个释放更改按钮),我希望文本框中的10便士的数量变成54…有什么想法吗?我尝试使用mod运算符,但不确定如何使用:C# 使用mod运算符减少文本框中的值,c#,modulo,C#,Modulo,好的,我已经创建了这个自动售货机申请表,但我在处理更改时遇到了问题。这台机器在一天开始时有50个10便士的进帐。一杯汽水的价格是40便士,因此,如果用户投入50便士,他将得到10便士的找零。我有一个文本框显示机器中10便士的数量,所以在开始时,50便士,在他输入50便士后,它将是55便士。然而,现在他必须得到10便士的零钱(我有一个释放更改按钮),我希望文本框中的10便士的数量变成54…有什么想法吗?我尝试使用mod运算符,但不确定如何使用: decimal change = d
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作为分子……所以……我有点迷路了。任何建议都很好 诸如此类:
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();
}
但假设在此之前,您已将用户放入机器的50便士添加到
txt_BoxTenPenny
中,如果您试图确定用户欠了多少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();
希望有帮助 模运算符(%
)返回除法运算的剩余部分。例如,23 MOD 10=3
在这种情况下,我相信您需要整数除法,或者下限
。也就是说,您想要分割并丢弃剩余部分
由于您使用的是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
这可能有一些用处:
如果他投50便士,10便士的数目如何增加5?你是说用户在10秒内投入50便士?如果是这样的话,这个改变是不相关的,因为你可以拒绝多余的,因此,赋值也是如此。如果他们把50p加进去,你没有55,你仍然有50。这就是整数除法余数运算符。如果x是非负整数,那么x%10给出x的最后一位。