如何使更改计算器更简单

Zor*_*oro 1 c#

好的,所以一个月前上课,秋季学期开始在3个星期内恢复.我想在书中做我们从未分配的作业.这个问题让我陷入困境,因为它在第二章中.它是一个给予改变的程序(92美分是编译时初始化).我的问题是......有没有什么方法可以使这个程序更"虚拟"而不是它.而且我还必须把(int)放在我对aQuarter,anDime等的分配之前.否则我之后会得到小数.这是为什么?有经验的程序员能解释一下吗?

另外,本章讨论了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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

seh*_*ehe 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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

打印

3 quarter
1 dime
1 nickel
2 pennies
Run Code Online (Sandbox Code Playgroud)