C# 使用mod运算符减少文本框中的值

C# 使用mod运算符减少文本框中的值,c#,modulo,C#,Modulo,好的,我已经创建了这个自动售货机申请表,但我在处理更改时遇到了问题。这台机器在一天开始时有50个10便士的进帐。一杯汽水的价格是40便士,因此,如果用户投入50便士,他将得到10便士的找零。我有一个文本框显示机器中10便士的数量,所以在开始时,50便士,在他输入50便士后,它将是55便士。然而,现在他必须得到10便士的零钱(我有一个释放更改按钮),我希望文本框中的10便士的数量变成54…有什么想法吗?我尝试使用mod运算符,但不确定如何使用: decimal change = d

好的,我已经创建了这个自动售货机申请表,但我在处理更改时遇到了问题。这台机器在一天开始时有50个10便士的进帐。一杯汽水的价格是40便士,因此,如果用户投入50便士,他将得到10便士的找零。我有一个文本框显示机器中10便士的数量,所以在开始时,50便士,在他输入50便士后,它将是55便士。然而,现在他必须得到10便士的零钱(我有一个释放更改按钮),我希望文本框中的10便士的数量变成54…有什么想法吗?我尝试使用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作为分子……所以……我有点迷路了。任何建议都很好

诸如此类:

    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的最后一位。