银行等额本息还款算法

等额本息还款,也称定期付息,即借款人每月按相等的金额偿还贷款本息,其中每月贷款利息按月初剩余贷款本金计算并逐月结清。把按揭贷款的本金总额与利息总额相加,然后平均分摊到还款期限的每个月中。作为还款人,每个月还给银行固定金额,但每月还款额中的本金比重逐月递增、利息比重逐月递减。

每月还款额计算公式如下:

每月还款额=[贷款本金×月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]

java代码如下:

import java.math.BigDecimal;

/**
 * 等额本息还款算法
 * Created by FuYung on 2015/8/3.
 */
public class PrincipalAndInterestEquals {

    /**
     * @param args
     */
    public static void main(String[] args) {
        BigDecimal invest = new BigDecimal(139000); // 本金
        double yearRate = 0.059; // 年利率
        int year = 15;//期限
        double monthRate = yearRate / 12;
        int month = year * 12;
        // 每月本息金额  = (本金×月利率×(1+月利率)^还款月数)÷ ((1+月利率)^还款月数-1)
        BigDecimal monthIncome = invest.multiply(new BigDecimal(monthRate * Math.pow(1 +
                monthRate, month))).divide(new BigDecimal(Math.pow(1 + monthRate, month) - 1), 2,
                BigDecimal.ROUND_HALF_UP);
        System.out.println("每月本息金额 : " + monthIncome);
        System.out.println("---------------------------------------------------");
        // 每月本金 = 本金×月利率×(1+月利率)^(还款月序号-1)÷((1+月利率)^还款月数-1)
        BigDecimal monthCapital;
        BigDecimal sumCapital = BigDecimal.ZERO;
        for (int i = 1; i < month + 1; i++) {
            monthCapital = invest.multiply(new BigDecimal(monthRate * (Math.pow((1 + monthRate),
                    i - 1)))).divide(new BigDecimal(Math.pow(1 + monthRate, month) - 1), 2,
                    BigDecimal.ROUND_HALF_UP);
            System.out.println("第" + i + "月本金: " + monthCapital);
            sumCapital = sumCapital.add(monthCapital);
        }
        System.out.println("---------------------------------------------------");
        // 每月利息  = 剩余本金 x 贷款月利率
        BigDecimal monthInterest;
        BigDecimal capital = invest;
        BigDecimal tmpCapital = BigDecimal.ZERO;
        BigDecimal sumInterest = BigDecimal.ZERO;
        for (int i = 1; i < month + 1; i++) {
            capital = capital.subtract(tmpCapital);
            monthInterest = capital.multiply(new BigDecimal(monthRate)).setScale(2, BigDecimal
                    .ROUND_HALF_UP);
            tmpCapital = invest.multiply(new BigDecimal(monthRate * (Math.pow((1 + monthRate), i
                    - 1)))).divide(new BigDecimal(Math.pow(1 + monthRate, month) - 1), 2,
                    BigDecimal.ROUND_HALF_UP);
            System.out.println("第" + i + "月利息: " + monthInterest);

            sumInterest = sumInterest.add(monthInterest);
        }
        System.out.println("本金总和:" + sumCapital + " 利息总和:" + sumInterest);
    }
}
时间: 2024-10-12 04:30:46

银行等额本息还款算法的相关文章

等额本息和等额本金计算

背景:一直以来不清楚等额本息和等额本金的计算过程,也不明白孰优孰劣,这里做个记录汇总 知乎答案 https://www.zhihu.com/question/21745865 作者:金斧子链接:https://www.zhihu.com/question/21745865/answer/26545005来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 经常会有人抱怨,选择了等额本息还款方式比等额本金还款方式下,同样的年限,但是利息支出会高出很多.所以,如果选择了等额

等额本息计算式的推导

其中P是全额, R是月息, N是期数. 对于等额本息, 每个月的还款数额相同, 但是利息是递减的, 第一个月是全额的一个月利息, 第二个月是去掉第一个月本金后剩余金额的一个月利息, 如下: 假定每月还款为x, 全额为m, 月息为r a1 = x - m*ra2 = x - (m - a1)*ra3 = x - (m - a1 - a2)*r...an = x - (m - a1 - ... - an-1)*ran+1 = x  (因为a1 + ... + an=m) 将a1代入a2的表达式, 然

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  

等额本息,等额本金,先息后本解读

本文转自https://zhuanlan.zhihu.com/p/31289465 先息后本:一般是指一年期的消费信贷,目前借款上限为30w,随借随还,按日计息,提前还款不罚息,每个月先付利息,第12个月还本金+第12个月利息.所以根据上文的例子,每个月的利息是:10w*5%/12=416.66. 第12个月支出10w本金+416.66. 两年总利息是1w.客户使用这种还款方式,最后的利率是 1w/10w/2*100%=5%2)等额本息:一般的银行贷款均可使用等额本息.等额本息是指:把贷款时间内

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

debx(); function debx() { $dkm = 240; //贷款月数,20年就是240个月 $dkTotal = 10000; //贷款总额 $dknl = 0.0515; //贷款年利率 $emTotal = $dkTotal * $dknl / 12 * pow(1 + $dknl / 12, $dkm) / (pow(1 + $dknl / 12, $dkm) - 1); //每月还款金额 $lxTotal = 0; //总利息 for ($i = 0; $i < $d

C语言 &#183; 还款计算

标题: 还款计算 银行贷款的等额本息还款方法是: 每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入). 比如说小明在银行贷款1万元.贷款年化利率为5%,贷款期限为24个月. 则银行会在每个月进行结算: 结算方法是:计算本金在本月产生的利息: 本金 x (年利率/12) 则本月本金结余为:本金 + 利息 - 每月固定还款额 计算结果会四舍五入到"分". 经计算,此种情况下,固定还款额应为:438.71 这样,第一月结算时的本金余额是: 9602.96 第二个月结

算法笔记_127:蓝桥杯2017模拟赛-本科组习题解答(Java)

 目录 1 算年龄 2 猜算式 3 排列序数 4 字符串比较 5 还款计算 6 滑动解锁 7 风险度量   PS:以下代码部分仅供参考,若有不当之处,还请路过同学指出哦~ 1 算年龄 标题:算年龄 英国数学家德摩根出生于19世纪初叶(即18xx年). 他年少时便很有才华.一次有人问他的年龄,他回答说: "到了x的平方那年,我刚好是x岁". 请你计算一下,德摩根到底出生在哪一年. 题中的年龄指的是周岁. 请填写表示他出生年份的四位数字,不要填写任何多余内容. 1806 public cl

信利SC123金融财务计算器评测——不错的HP 12C仿品

最近X宝48包邮购入信利SC123金融计算器,只是为了玩一玩(没错你的好友盗版狂魔又上线了),因为这是目前市面上能买到的最便宜的金融计算器了,也是能买到的最便宜的RPN计算器,顺手出个评测.这个计算器估计感兴趣的人比得力那款少的多,所以就简略一点,少放点图吧. 重要的写在最前面,这款计算器虽然是完全仿制的HP 12C白金版,但是挺多允许12C的考试据说不让带这款(道听途说,不保证真实性,据说原因是监考不认识这款计算器),所以买来仅仅为了考试的建议慎购. 首先我想说几句信利这个牌子.信利计算器存在

嗷嗷待宰的大学生,以及他们的六个钱包

1近期,教育部官网发布了<不良“校园贷”案件线索征集>公告.今年以来,人民日报也多次发文强调了校园贷的风险,以及校园消费金融市场需要被监管. 校园贷,又有了死灰复燃的迹象. 得承认的是,随着经济的发展,学生们确实是一代比一代有钱的,因为他们的父母有过足够的积累,而对孩子好,对大多数父母而言,是天经地义的本能. 更得承认的是,随着互联网的发展,学生们接收到的信息,面对的诱惑,也是越来越多的. 过去我们最多是看看身边最有钱的同学怎么生活,社交媒体和各类种草平台发展起来后,学生们看到的是这个领域最光