C#双倍下降平衡

时间:2016-11-07 23:28:23

标签: c#

所以我需要创建一个输入年份和金额的方法,控制台程序将输出一个显示双倍余额折旧余额的图表。

这就是我所拥有的。

 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个。

1 个答案:

答案 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成为浮点值。