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

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#实现的等额本息法、按月付息到期还本法、一次性还本付息法的更多相关文章

  1. 等额本息Vs等额本金

    1:贷款种类一旦选择不能改变.2:你提前还款的全部属于本金部分,若能一次性归还本金只需付清当月月息即可[不按年利率计算而是月利率],与你归还的本金违约金[设:提前还款10万*X.XXX%=违约金,具体 ...

  2. java 等额本金与等额本息

    等额本金与等额本息 等本等息的意思是,每月的本金相等,利息也相等. 等额本息的意思是,每月的本金+利息之和相等(其实每个月本金和利息都有变化,并不相等) 等本等息的意思是,每月的本金相等,利息不等. ...

  3. 写一个MySql存储过程实现房贷等额本息还款计算(另外附javascript代码)

    写一个MySql存储过程实现房贷等额本息还款计算 MySql存储过程代码如下: DROP procedure IF EXISTS `calc_equal_interest_proc`; DELIMIT ...

  4. sql 等额本息

    /* 等额本息计算还款额 a 贷款总额 b 月利率 m 贷款月数 */ execute block returns (result double precision) as declare a ; - ...

  5. Java 等额本金等额本息工具类

    原文:http://www.open-open.com/code/view/1449034309983 等额本息: /** * Description:等额本息工具类 * Copyright: Cop ...

  6. java月利率计算(等额本息贷款)

    等额本息 每月还款计算公式: 每月本息金额 = (本金×月利率×(1+月利率)^还款月数)÷ ((1+月利率)^还款月数-1)) 反转求出 月利率 月利率 如果根据上面公式反转是算不出来的. 下面给出 ...

  7. 144_Power Pivot贷款之等额本息与等额本金

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 买房贷款的时候会遇到等额本息与等额本金的问题,今天做了一个两者对比,看看如何选择,来一张对比图. 等额本息的前期 ...

  8. PHP房贷计算器代码,等额本息,等额本金

    debx(); function debx() { $dkm = 240; //贷款月数,20年就是240个月 $dkTotal = 10000; //贷款总额 $dknl = 0.0515; //贷 ...

  9. 欧几里得算法(gcd) 裴蜀定理 拓展欧几里得算法(exgcd)

    欧几里得算法 又称辗转相除法 迭代求两数 gcd 的做法 由 (a,b) = (a,ka+b) 的性质:gcd(a,b) = gcd(b,a mod b) int gcd(int a,int b){ ...

随机推荐

  1. C# rename方法重命名文件

    记得C# File类中是没有rename这个方法 所以网上很多都用的是move moveTo copy+delete等这些方法 其实以上的方法 虽然可以实现功能 但看起来总觉得很蛋疼 今天百度 突然发 ...

  2. 【Java学习笔记】foreach语句(高级for)

    package p2; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java ...

  3. java反射案例

     Java反射经典实例 2007-08-29 17:55:25 分类: Java Java提供了一套机制来动态执行方法和构造方法,以及数组操作等,这套机制就叫——反射.反射机制是如今很多流行框架的实现 ...

  4. max min 与 min max 的差别

    在求解最优化问题时,遇到一个对偶问题的转换:对于形如 的问题,可以转换为求解 即原问题的对偶问题.而在一般情况下: 对于这个为题的说明我参照http://math.stackexchange.com/ ...

  5. esri联邦用户大会 总结

    1 概述 1.1 文档概述 ESRI联邦用户大会已于2月25日到2月27日在美国华盛顿举行,现就其会议中设计到的内容总结如下: 1.2 景观分析 这是第一个demo,演示的是"景观分析&qu ...

  6. 解析 Json 相关

    statusJson sj = new statusJson() { ShipmentNum = "555555", Status1 = "05", Wareh ...

  7. MATLAB-octave中平面向量场图的可视化

    quiver,平面向量场图 [x, y, z] = peaks(20); [u, v] = gradient(z); contour(x, y, z, 10); hold on, quiver(x,y ...

  8. 【九度OJ】题目1061:成绩排序

    题目描述: 有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息. 输入: 测试数据有多组,每组输入 ...

  9. office中通过宏添加快捷键

    把“Microsoft 公式 3.0”作为一个按钮放在 2013中的快速访问工具栏的方法 在使用office办公软件的过程中,因为有的人还在使用office2003版本,所以在使用高版本的office ...

  10. 最新基于adt-bundle-windows-x86的android开发环境筹建

    最新基于adt-bundle-windows-x86的android开发环境搭建 某系统要配套做一个android客户端,来一次android开发环境快速搭建,系统Win7,具体步骤如下: 1.下载j ...