C# 小数到整数

C# 小数到整数,c#,integer,decimal,console-application,C#,Integer,Decimal,Console Application,我的一个家庭作业有问题。这几乎是不可能的。问题是这样的 “将来,您可能会使用其他编程语言,这些语言没有支持精确货币计算的十进制类型。在这些语言中,应该使用整数执行此类计算。修改应用程序以仅使用整数计算复利。将所有货币金额视为整数。然后分别使用除法和余数运算将结果分解为美元和美分部分。显示结果时,在美元和美分部分之间插入一个句点。“ 当我按照指示使用整数时,我甚至还没来得及分出任何东西就得到了这些溢出错误。有人知道如何实现这一点吗?这是需要修改的原始代码 decimal amount; /

我的一个家庭作业有问题。这几乎是不可能的。问题是这样的

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

当我按照指示使用整数时,我甚至还没来得及分出任何东西就得到了这些溢出错误。有人知道如何实现这一点吗?这是需要修改的原始代码

    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);
    }
十进制金额;//年末存款金额
十进制本金=1000;//利息前的初始金额
双倍利率=0.05;//利率
//显示标题
Console.WriteLine(“第{0,20}年”,“存款金额”);
//计算每十年的存款金额

对于(int year=1;year您每次通过循环都在更改
amount
number
的值,但我不认为这是您希望在此处执行的操作。如果您删除这些分配并在最后的
控制台中更改参数。WriteLine
调用,(
amount/100
amount%100
在这里会很有帮助)你应该能够得到你想要的结果。

((ulong)Math.Pow(100+率,年))增长太快105^10>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

好的编程实践的一部分是选择有意义的变量名。“数字”有什么作用?我们的想法是一样的,我只是想让Mikey为此更加努力。(毕竟,这是他的家庭作业。)当提到“将所有货币金额视为一分钱的整数”时,我认为这个问题是相当慷慨的,这强烈地暗示了这个解决方案比“将原始代码中的每个数字乘以100,进行数学运算,然后将答案除以100,然后再打印出来”要微妙得多。
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));