-1

好的,所以我已经创建了这个自动售货机申请表,但我在摆脱变化时遇到了问题。这台机器在一天开始时有 50 个 10p。一杯汽水要 40 便士,所以,如果用户投入 50 便士,他将得到 10 便士的零钱。我有一个文本框显示机器中 10p 的数量,所以一开始是 50,在他输入 50p 之后它将是 55。但是,现在他必须得到 10p 更改(我有一个释放更改按钮),我想要文本框中 10p 的数量达到 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 作为分子..所以..我有点迷失了。任何建议都会很棒!

4

4 回答 4

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();
    }

但假设在此之前,您已将用户放入机器的 50p 添加到txt_BoxTenPenny.

于 2013-02-07T15:18:03.017 回答
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();

希望有帮助!

于 2013-02-07T15:20:41.963 回答
0

模运算符 ( %) 返回除法运算的余数。例如,23 MOD 10 = 3

在这种情况下,我相信你想要整数除法,或者Floor. 也就是说,您想划分并丢弃剩余部分。

由于您使用的是decimal,我想change将包含0.1010p。在这种情况下,请尝试以下操作:

//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

于 2013-02-07T15:25:27.480 回答
-1

这可能有一些用处: 发布自动售货机更改:使用 C# 递归构建和搜索树

于 2013-02-07T15:41:59.507 回答