600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C#实现的等额本息法 按月付息到期还本法 一次性还本付息法

C#实现的等额本息法 按月付息到期还本法 一次性还本付息法

时间:2021-11-16 01:46:04

相关推荐

C#实现的等额本息法 按月付息到期还本法 一次性还本付息法

你若懂行,那便有用,如下:

void Main()

{

var x = pute(11111, 12, 3);

x.Dump();

var y = pute(11111, 12, 3);

y.Dump();

var z = pute(11111, 12, 3);

z.Dump();

}

public class DengEBenXi

{

/// <summary>

/// 等额本息法

/// </summary>

/// <param name="amountT">投资金额</param>

/// <param name="yearRate">年利率</param>

/// <param name="monthsx">投资期限,单位:月</param>

/// <returns></returns>

public static List<BackUnit> Compute(double amount, double yearRate, int months)

{

var monthRate = (yearRate) / 1200.0; //年利率转为月利率

var datalist = new List<BackUnit>();

var i = 0;

var a = 0.0; // 偿还本息

var b = 0.0; // 偿还利息

var c = 0.0; // 偿还本金

//利息收益

var totalRateIncome =

(amount * months * monthRate * Math.Pow((1 + monthRate), months)) / (Math.Pow((1 + monthRate), months) - 1) - amount;

var totalIncome = totalRateIncome + amount;

var d = amount + totalRateIncome; // 剩余本金

totalRateIncome = Math.Round(totalRateIncome * 100) / 100;// 支付总利息

totalIncome = Math.Round(totalIncome * 100) / 100;

a = totalIncome / months; //每月还款本息

a = Math.Round(a * 100) / 100;//每月还款本息

for (i = 1; i <= months; i++)

{

b = (amount * monthRate * (Math.Pow((1 + monthRate), months) - Math.Pow((1 + monthRate), (i - 1)))) / (Math.Pow((1 + monthRate), months) - 1);

b = Math.Round(b * 100) / 100;

c = a - b;

c = Math.Round(c * 100) / 100;

d = d - a;

d = Math.Round(d * 100) / 100;

if (i == months)

{

c = c + d;

b = b - d;

c = Math.Round(c * 100) / 100;

b = Math.Round(b * 100) / 100;

d = 0;

}

var unit = new BackUnit();

unit.Number = i;// 期数

unit.TotalRate = totalRateIncome;// 总利息

unit.TotalMoney = totalIncome;// 总还款

unit.A = a;// 偿还本息 someNumber.ToString("N2");

unit.B = b;// 偿还利息

unit.C = c;// 偿还本金

unit.D = d;// 剩余本金

datalist.Add(unit);

}

return datalist;

}

}

public class AnYueFuxiDaoqiHuanBen

{

/// <summary>

/// 按月付息到期还本

/// </summary>

/// <param name="amount">投资金额</param>

/// <param name="yearRate">年利率</param>

/// <param name="months">投资期限,单位:月</param>

/// <returns></returns>

public static List<BackUnit> Compute(double amount, double yearRate, int months)

{

var datalist = new List<BackUnit>(); //new Array(Deadline); //

double rateIncome = amount * yearRate / 100 * (months / 12.0);

double rateIncomeEve = (rateIncome / months);

var total = amount + rateIncome;

for (var i = 1; i < months; i++)

{

var unit = new BackUnit();

unit.Number = i;// 期数

unit.TotalRate = rateIncome;//Math.Round((Amount + TotalRate) * 100) / 100;// 总利息

unit.TotalMoney = total;//TotalRate;// 总还款

unit.A = rateIncomeEve;// 偿还本息 someNumber.ToString("N2");

unit.B = rateIncomeEve;// 偿还利息

unit.C = 0;// 偿还本金

unit.D = amount * 1 + rateIncome * 1 - rateIncomeEve * i;// 剩余本金

datalist.Add(unit);

}

datalist.Add(new BackUnit() {

Number= months,

TotalRate = rateIncome,

TotalMoney = total,

A = amount + rateIncomeEve,

B = rateIncomeEve,

C = amount,

D = 0

});

return datalist;

}

}

public class YicixingHuanBenFuxi

{

/// <summary>

/// 一次性还本付息

/// </summary>

/// <param name="amount">投资金额</param>

/// <param name="yearRate">年利率</param>

/// <param name="months">投资期限,单位:月</param>

/// <returns></returns>

public static BackUnit Compute(double amount, double yearRate, int months)

{

BackUnit unit = new BackUnit();

var rate = yearRate;

var rateIncome = amount * rate / 100 * (months / 12.0);

var totalIncome = amount + rateIncome;

unit.Number = 1;// 期数

unit.TotalRate = rateIncome;//Math.Round((Amount + TotalRate) * 100) / 100;// 总利息

unit.TotalMoney = totalIncome;//TotalRate;// 总还款

unit.A = totalIncome;// 偿还本息 someNumber.ToString("N2");

unit.B = rateIncome;// 偿还利息

unit.C = 0;// 偿还本金

unit.D = 0;// 剩余本金

return unit;

}

}

public class BackUnit

{

//当前期数

public int Number { get; set; }

//总利息

public double TotalRate { get; set; }

//总还款

public double TotalMoney { get; set; }

//本期应还全部

public double A { get; set; }

//本期应还利息

public double B { get; set; }

//本期应还本金

public double C { get; set; }

//本期剩余本金

public double D { get; set; }

}

以下为运行结果:

再附送一个我所写的在线测试地址:/phome/mockcompute。

本文基于Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名/luminji(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。