1

さて、授業は 1 か月前に終了し、秋学期は 3 週間後に再開されます。私たちが割り当てられたことのない本の宿題をしたかった. この1つの質問は、第2章にあるため、私を行き詰まらせなければなりません. 変更を戻すプログラムです (92 セントはコンパイル時の初期化です)。私の質問は...このプログラムを実際よりも「ダミーダウン」する方法はありますか。また、anQuarter、anDime などの割り当ての前に (int) を付ける必要がありました。そうでなければ、後で小数を取得していました。何故ですか?経験豊富なプログラマーは説明できますか?

また、この章では MOD について説明していたので、それを使用しました。これは、呼び出しクラス メソッドが導入される前であり、明らかにループと配列が導入される前です。そのため、これらのツールを使用できませんでした。非常に基本的な「穴居人」プログラムであると思われます...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication273
{
    class Program
    {
        static void Main(string[] args)
        {
        double change = 0.92;

        double quarter = 0.25;
        double dime = 0.10;
        double nickel = 0.05;
        double pennies = 0.01;

        double anQuarter = (int)(change / quarter);
        double anDime = (int)((change % quarter) / dime);
        double anNickel = (int)(((change % quarter) % dime) / nickel);
        double anPennies = (int)((((change % quarter) % dime) % nickel) / pennies);

        Console.WriteLine("The amount of quarters are....{0}", anQuarter);
        Console.WriteLine("The amount of dimes are....{0}", anDime);
        Console.WriteLine("The amount of nickels are....{0}", anNickel);
        Console.WriteLine("The amount of pennies are....{0}", anPennies);
        }
    }
}
4

3 に答える 3

7

少なくとも小数を使用します: .NET での小数、浮動小数点数、倍精度の違いは?

次に、コードの重複を削除します: http://ideone.com/ZY9qBmでライブを参照してください。

using System;

class Program
{
    static void Main()
    {
        decimal change    = 0.92m;

        var coins = new [] { // ordered
            new { name = "quarter", nominal   = 0.25m }, 
            new { name = "dime", nominal      = 0.10m },
            new { name = "nickel", nominal    = 0.05m },
            new { name = "pennies", nominal   = 0.01m }
        };

        foreach (var coin in coins)
        {
            int count = (int) (change / coin.nominal);
            change -= count * coin.nominal;

            Console.WriteLine("{0} {1}", count, coin.name);
        }
    }
}

版画

3 quarter
1 dime
1 nickel
2 pennies
于 2013-08-01T22:36:56.063 に答える
2

また、anQuarter、anDime などの割り当ての前に (int) を付ける必要がありました。そうでなければ、後で小数を取得していました。何故ですか?経験豊富なプログラマーが説明できますか

(int)、式の値を整数型に変換しています。このような型キャストの使用は、あるデータ型から別のデータ型に変換する便利な方法です。この場合、計算の結果はdoubleデー​​タ型になります。これを にキャストすることintは、丸めを行わずにすべての 10 進数を削除する最も簡単な方法です。

于 2013-08-01T22:45:06.033 に答える