所以我需要创建一个输入年份和金额的方法,控制台程序将输出一个显示双倍余额折旧余额的图表。
这就是我所拥有的。
static void doubleDecliningBalance(double amount, int years)
{
Console.WriteLine("{0,-20}{1,10}", "Year", "Depreciation");
Console.WriteLine("----------------------------------");
int count = 0;
double depreciation, amountLeft = 0;
while (count < years)
{
amountLeft = amount;
count = count + 1;
depreciation = (amountLeft * (2 / years));
amountLeft = amount - depreciation;
Console.WriteLine("{0,-20}{1,10:C2}", count, amountLeft);
}
}
现在,当我运行程序时,它不会贬值。公式是正确的我认为所以我很困惑为什么它不会贬值,这意味着如果我输入5年和5000美元的金额;它将在5年内显示5000个。
答案 0 :(得分:0)
您将从循环的每次迭代中减去原始金额,这意味着您不会从每年的当前余额中折旧,而是从起始余额中折旧。
如果amount
代表原始金额而amountLeft
代表当前余额,请尝试将循环更改为此类
amountLeft = amount;
while (count < years)
{
count = count + 1;
depreciation = (amountLeft * (2.0 / years));
amountLeft -= depreciation;
Console.WriteLine("{0,-20}{1,10:C2}", count, amountLeft);
}
编辑:正如@Jim指出的那样,您的代码还有另一个错误。因为您在(2 / years)
附近添加了parantheses,折旧可能为零(即,除非年份为1或2),因为计算是作为整数除法进行的。删除parantheses或让2
成为浮点值。