-1

さて、この自動販売機の申し込みフォームを作成しましたが、おつりを取り除くのに問題があります。マシンは、その日の開始時に 50 の 10p を持っています。炭酸飲料は 40 ペンスなので、ユーザーが 50 ペンスを入れると、10 ペンスの釣り銭が戻ってきます。マシンに 10p の量を表示するテキスト ボックスがあるので、最初は 50、彼が 50p を入れた後は 55 になります。テキストボックス内の 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. つまり、分割して残りを捨てたいということです。

あなたは を使用しているので、10pで含まれるdecimalと思います。その場合は、次のことを試してください。change0.10

//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 に答える