我在完成我的特定家庭作业时遇到了麻烦。这几乎是不可能的。问题是这样的......
“将来,您可以使用其他编程语言,这些编程语言没有类似十进制的类型,支持精确的货币计算。在这些语言中,您应该使用整数执行此类计算。修改应用程序以仅使用整数来计算将所有货币金额视为便士的整数,然后分别使用除法和余数运算将结果分解为美元和美分部分。当您显示结果时,在美元和美分部分之间插入一个期间。 “
当我按照指示并使用整数时,我会得到这些溢出错误,然后我甚至可以将任何东西分开。有谁知道如何使这项工作?这是需要修改的原始代码......
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);
}
这是我到目前为止的代码......
long amount; //amount on deposit at end of each year
long principal = 100000; //initial amount before interest
long rate = 5; //interest rate
long 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 *
((long)Math.Pow(100 + rate, year));
amount /= number;
number *= 10;
//display the year and the amount
Console.WriteLine("{0,4}{1,20}", year, amount);
它获得了一些正确的数字,但由于某种原因开始吐出负数。
答案 0 :(得分:1)
只是给你一个提示:
int amount;
//...some code...
//let's pretend we have an amount of 100.97
amount = (int)(100.97 * 100); // amount = 10097
答案 1 :(得分:0)
Math.Pow
使用double。它不会长时间使用
在下面的行中,您将意味着将您的费率和年份加倍。
amount = principal *
((long)Math.Pow(100 + rate, year));
所以你正在这样做:
double dRate = (double)(100 + rate);
double dYear = (double)year;
double dPow = Math.Pow(dRate, dYear);
amount = principal * (long)dPow;
如果您希望Pow功能真正使用很长时间,那么您可能需要自己编写。