C# C中的双倍余额递减#

C# C中的双倍余额递减#,c#,C#,所以我需要创建一个方法,输入年份和金额,控制台程序将输出一个图表,显示双倍余额递减折旧 这就是我所拥有的 static void doubleDecliningBalance(double amount, int years) { Console.WriteLine("{0,-20}{1,10}", "Year", "Depreciation"); Console.WriteLine("---------------------------------

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

这就是我所拥有的

 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);
        }
    }
静态无效双倍递减余额(双倍金额,整数年)
{
Console.WriteLine(“{0,-20}{1,10}”,“年”,“折旧”);
Console.WriteLine(“---------------------------------------------”);
整数计数=0;
双倍折旧,剩余金额=0;
而(计数<年)
{
amountLeft=金额;
计数=计数+1;
折旧=(剩余金额*(2/年));
amountLeft=金额-折旧;
WriteLine({0,-20}{1,10:C2}),count,amountLeft);
}
}

现在,当我运行程序时,它不会贬值。这个公式是正确的,我想我不明白为什么它不会贬值,也就是说如果我输入5年和5000美元;它将显示所有5年的5000英镑。

您将从循环的每次迭代的原始金额中减去,这意味着您不会从每年的当前余额中贬值,而是从起始余额中贬值

如果
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);
}
amountLeft=金额;
而(计数<年)
{
计数=计数+1;
折旧=(剩余金额*(2.0/年));
剩余金额-=折旧;
WriteLine({0,-20}{1,10:C2}),count,amountLeft);
}

编辑:正如@Jim指出的,您的代码中还有一个错误。由于您在
(2/年)
周围添加了parantises,折旧可能为零(即,除非年数为1或2),因为计算是以整数除法进行的。删除parantesse或将
2
设为浮点值。

您从不更新
amount
,因此每个循环的输出都是相同的。这将是学习使用调试器逐步完成代码的最佳时机,这将在两到三次循环中向您显示问题。这是修复的一部分。循环中有两行设置
amountLeft
;这两个问题都需要解决。@DStanley,没错。我没有看到同一个变量被重新分配。答案更新了。现在OP想知道为什么所有行上仍然是5000:)