小数到整数

时间:2013-03-13 18:42:36

标签: c# integer decimal console-application

我在完成我的特定家庭作业时遇到了麻烦。这几乎是不可能的。问题是这样的......

“将来,您可以使用其他编程语言,这些编程语言没有类似十进制的类型,支持精确的货币计算。在这些语言中,您应该使用整数执行此类计算。修改应用程序以仅使用整数来计算将所有货币金额视为便士的整数,然后分别使用除法和余数运算将结果分解为美元和美分部分。当您显示结果时,在美元和美分部分之间插入一个期间。 “

当我按照指示并使用整数时,我会得到这些溢出错误,然后我甚至可以将任何东西分开。有谁知道如何使这项工作?这是需要修改的原始代码......

    decimal amount; //amount on deposit at end of each year
    decimal principal = 1000; //initial amount before interest
    double rate = 0.05; //interest rate

    //display headers
    Console.WriteLine("Year{0,20}", "Amount on deposit");

    //calculate amount on deposit for each of ten years
    for (int year = 1; year <= 10; year++)
    {
        //calculate new amount for specified year
        amount = principal *
            ((decimal)Math.Pow(1.0 + rate, year));

        //display the year and the amount
        Console.WriteLine("{0,4}{1,20:C}", year, amount);
    }

这是我到目前为止的代码......

        ulong amount; //amount on deposit at end of each year
        ulong principal = 100000; //initial amount before interest
        ulong rate = 5; //interest rate
        ulong number = 100;

        //display headers
        Console.WriteLine("Year{0,20}", "Amount on deposit");

        //calculate amount on deposit for each of ten years
        for (int year = 1; year <= 10; year++)
        {
            //calculate new amount for specified year
            amount = principal *
                ((ulong)Math.Pow(100 + rate, year));

            amount /= number;

            number *= 10;

            //display the year and the amount
            Console.WriteLine("{0,4}{1,20}", year, amount);

它获得了一些正确的数字,但随后由于某种原因开始吐出零。

2 个答案:

答案 0 :(得分:0)

您每次循环都会更改amountnumber的值,但我不相信您想要在此处执行此操作。如果您删除这些分配并更改最终Console.WriteLine来电中的参数,(amount / 100amount % 100在此处会有所帮助)您应该能够获得所需的结果。< / p>

答案 1 :(得分:0)

((ulong)Math.Pow(100 +率,年))生长方式太快105 ^ 10&gt; ULONG。

我认为老师会让他们把math.pow保持为小数。

amount = (ulong)(Math.Round(principal *
                Math.Pow((number + rate)/100.0, year),0));

            //display the year and the amount
            Console.WriteLine("{0,4}{1,17}.{2,-2}", year, "$" + (ulong)(amount / number), (ulong)(amount % number));

问题只是说变量,而不是常量:)变量仍然是ulong