C#实现的等额本息法、按月付息到期还本法、一次性还本付息法
你若懂行,那便有用,如下:
void Main()
{
var x = DengEBenXi.Compute(11111, 12, 3);
x.Dump();
var y = AnYueFuxiDaoqiHuanBen.Compute(11111, 12, 3);
y.Dump();
var z = YicixingHuanBenFuxi.Compute(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; }
}
以下为运行结果:
再附送一个我所写的在线测试地址:http://p2p.tminji.com/phome/mockcompute。
C#实现的等额本息法、按月付息到期还本法、一次性还本付息法的更多相关文章
- 等额本息Vs等额本金
1:贷款种类一旦选择不能改变.2:你提前还款的全部属于本金部分,若能一次性归还本金只需付清当月月息即可[不按年利率计算而是月利率],与你归还的本金违约金[设:提前还款10万*X.XXX%=违约金,具体 ...
- java 等额本金与等额本息
等额本金与等额本息 等本等息的意思是,每月的本金相等,利息也相等. 等额本息的意思是,每月的本金+利息之和相等(其实每个月本金和利息都有变化,并不相等) 等本等息的意思是,每月的本金相等,利息不等. ...
- 写一个MySql存储过程实现房贷等额本息还款计算(另外附javascript代码)
写一个MySql存储过程实现房贷等额本息还款计算 MySql存储过程代码如下: DROP procedure IF EXISTS `calc_equal_interest_proc`; DELIMIT ...
- sql 等额本息
/* 等额本息计算还款额 a 贷款总额 b 月利率 m 贷款月数 */ execute block returns (result double precision) as declare a ; - ...
- Java 等额本金等额本息工具类
原文:http://www.open-open.com/code/view/1449034309983 等额本息: /** * Description:等额本息工具类 * Copyright: Cop ...
- java月利率计算(等额本息贷款)
等额本息 每月还款计算公式: 每月本息金额 = (本金×月利率×(1+月利率)^还款月数)÷ ((1+月利率)^还款月数-1)) 反转求出 月利率 月利率 如果根据上面公式反转是算不出来的. 下面给出 ...
- 144_Power Pivot贷款之等额本息与等额本金
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 买房贷款的时候会遇到等额本息与等额本金的问题,今天做了一个两者对比,看看如何选择,来一张对比图. 等额本息的前期 ...
- PHP房贷计算器代码,等额本息,等额本金
debx(); function debx() { $dkm = 240; //贷款月数,20年就是240个月 $dkTotal = 10000; //贷款总额 $dknl = 0.0515; //贷 ...
- 欧几里得算法(gcd) 裴蜀定理 拓展欧几里得算法(exgcd)
欧几里得算法 又称辗转相除法 迭代求两数 gcd 的做法 由 (a,b) = (a,ka+b) 的性质:gcd(a,b) = gcd(b,a mod b) int gcd(int a,int b){ ...
随机推荐
- 服务器内存UDIMM与RDIMM区别
UDIMM 全称是无缓冲双信道内存模块(Unbuffered Dual In-Lne Memory Modules),它不支持服务器内存满配,就是最高容量了,因为使用UDIMM内存时最大使用每通道只能 ...
- 使用Scala实现文件单词计数
package com.dtapp.base import scala.io.Source object WCntApp { def main(args: Array[String]) { val f ...
- C# 通过身份证查询出生日期
private int GetAgeBycode(string b_car_code) { string birthday = ""; //处理18位的身份证号码从号码中得到生日和 ...
- easyUI datagraid的列排序
在给datagraid做多列排序时请注意: 首先,做的是后台排序,那么需要设置: remoteSort:'true', 然后,不要添加 multiSort:'true',这个是多列一起排序无法实现.. ...
- 【12-JDBC编程】
JDBC编程 JDBC概述 •通过使用JDBC API,Java程序可以非常方便地操作各种主流数据库,这是使Java语言的巨大 魅力所在.而且由于Java语言的跨平台特性,所以使用JDBC API所编 ...
- Freemarker常用指令使用范例
我的開發環境 框架: springmvc+freemarker 開發工具: springsource-tool-suite-2.9.0 JDK版本: 1.6.0_29 ...
- iOS开发零基础--Swift教程 可选类型
可选类型的介绍 注意: 可选类型时swift中较难理解的一个知识点 暂时先了解,多利用Xcode的提示来使用 随着学习的深入,慢慢理解其中的原理和好处 概念: 在OC开发中,如果一个变量暂停不使用,可 ...
- [置顶]PADS PCB功能使用技巧系列之NO.002- 如何走差分线?
差分信号在高速电路设计中应用越来越广泛,如USB.HDMI.PCI.DDR*等,承载差分信号的差分线主要优势有:抗干扰能力强,能有效抑制EMI.时序定位精确等,对于PCB工程师来说,最关注的是如何确保 ...
- Await, and UI, and deadlocks! Oh my!
It’s been awesome seeing the level of interest developers have had for the Async CTP and how much us ...
- NSThread 子线程 Cocoa NSOperation GCD(Grand Central Dispatch) 多线程
单词:thread 英 θred:n 线.思路.vt 穿过.vi 穿透过 一. 进程.线程 进程:正在进行中的程序被称为进程,负责程序运行的内存分配,每一个进程都有自己独立的虚拟内存空间 线程: ...