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