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));