房贷还款计算

  买房子了,按揭还款,为了了解两种贷款方式(等额本金方式和等额本息方式)的区别,以及每个月还款的详细信息,自己写了一个程序用来计算。

  两种方式还款结果如下(都是贷40W,20年,年利率假定为0.0655):


  等额本金方式和等额本息方式的概念如下:

  等额本金:本金保持相同,利息逐月递减,月还款数递减。

  等额本息:本金逐月递增,利息逐月递减,月还款数不变。

  理解了概念,要计算就很简单了。可参见:http://cs.jiwu.com/zhuanti/101905/

  解释一下结果中每一列:

还款的第几年
还款的第几年的第几个月
当月本金当前月应还的本金
当月利息当前月应还有利息
当月还款当前月应还的本金和利息总和
共还本金到当前月一共还的本金
共还利息到当前月一共还的利息
共还款到当前月一共还的本金和利息总和
剩余未还本金剩余未还的本金
提前还总金额如果提前还剩余的本金,此列表示需要还的本金和日利息总和(按最多30天来算的日利息)
提前还利息如果提前还剩余的本金,此列表示需要还的剩余本金的日利息(按最多30天来算的日利息)
提前总共还如果提前还剩余的本金,此列表示从开始还到还完一共所还的总和
  最后,代码如下:

// Mortgage.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <math.h>
#include <Windows.h>using namespace std;double g_dTotalPrincipal = 0.0; // 总共贷款金额
double g_nYears = 0; // 贷款年限
double g_dYearRate = 0.0; // 年利率// 显示等额本金还款法
void ShowConstantPrincipal()
{int nMonths = 12 * g_nYears; // 总还贷月数double dMonthRate = g_dYearRate / 12; // 月利率double dMonthPrincipal = g_dTotalPrincipal / nMonths; // 每个月等额本金double dRestPrincipal = g_dTotalPrincipal; // 剩余未还本金double dPrincipalTotalPayBack = 0.0; // 总共还本金double dInterestTotal = 0.0; // 总共还利息double dMoneyTotalPayBack = 0.0; // 总共还本息cout << setw(2) <<"年" << "|" << setw(2) << "月" << "|" << setw(10) << "当月本金" << "|" << setw(10) << "当月利息" << "|"<< setw(10) << "当月还款" << "|" << setw(12) << "共还本金" << "|"<< setw(12) << "共还利息" << "|" << setw(12) << "共还款" << "|"<< setw(12) << "剩余未还本金" << "|" << setw(12) << "提前还总金额" << "|" << setw(12) << "提前还利息" << "|"<< setw(12) << "提前总共还" << "|" << endl;cout << fixed << setprecision(3);for (int i = 1; i <= nMonths; i++){// 第几年if (1 == i % 12){cout << setw(2) << (i / 12) + 1 << "|";}else{cout << setw(2) << " " << "|";}// 第几月cout << setw(2) << (i - 1) % 12 + 1 << "|";// 当月本金cout << setw(10) << dMonthPrincipal << "|";dPrincipalTotalPayBack += dMonthPrincipal;// 当月利息cout << setw(10) << dRestPrincipal * dMonthRate << "|";dInterestTotal += dRestPrincipal * dMonthRate;// 当月还款cout << setw(10) << dMonthPrincipal + dRestPrincipal * dMonthRate << "|";// 共还本金cout << setw(12) << dPrincipalTotalPayBack << "|";// 共还利息cout << setw(12) << dInterestTotal << "|";// 共还款cout << setw(12) << dPrincipalTotalPayBack + dInterestTotal << "|";// 剩余未还本金dRestPrincipal -= dMonthPrincipal;if (dRestPrincipal < 0.0001){// 由于计算误差,最后一次可能剩余未还本金为极小的数dRestPrincipal = 0.0;}cout << setw(12) << dRestPrincipal << "|";// 提前还总金额// 以30天来计算cout << setw(12) << dRestPrincipal + dRestPrincipal * (g_dYearRate / 360) * 30<< "|";// 提前多还cout << setw(12) << dRestPrincipal * (g_dYearRate / 360) * 30 << "|";// 提前总共还if (dRestPrincipal > 0.0){// 如果都还完了,就不存在提前还了cout << setw(12) << dPrincipalTotalPayBack + dInterestTotal + dRestPrincipal + dRestPrincipal * (g_dYearRate / 360) * 30 << "|";}else{cout << setw(12) << 0.0 << "|";}cout << endl;}
}// 显示等额本息还款法
void ShowConstantPrincipalInterest()
{	int nMonths = 12 * g_nYears; // 总还贷月数double dMonthRate = g_dYearRate / 12; // 月利率double dTotalMoney1Month = (g_dTotalPrincipal * dMonthRate * pow((1 + dMonthRate), nMonths)) / (pow((1 + dMonthRate), nMonths) - 1);double dRestPrincipal = g_dTotalPrincipal; // 剩余未还本金double dPrincipalTotalPayBack = 0.0; // 总共还本金double dInterestTotal = 0.0; // 总共还利息double dMoneyTotalPayBack = 0.0; // 总共还本息cout << setw(2) <<"年" << "|" << setw(2) << "月" << "|" << setw(10) << "当月本金" << "|" << setw(10) << "当月利息" << "|"<< setw(10) << "当月还款" << "|" << setw(12) << "共还本金" << "|"<< setw(12) << "共还利息" << "|" << setw(12) << "共还款" << "|"<< setw(12) << "剩余未还本金" << "|"<< setw(12) << "提前还总金额" << "|" << setw(12) << "提前还利息" << "|"<< setw(12) << "提前总共还" << "|" << endl;cout << fixed << setprecision(3);for (int i = 1; i <= nMonths; i++){// 第几年if (1 == i % 12){cout << setw(2) << (i / 12) + 1 << "|";}else{cout << setw(2) << " " << "|";}// 第几月cout << setw(2) << (i - 1) % 12 + 1 << "|";// 当月本金cout << setw(10) << dTotalMoney1Month - dRestPrincipal * dMonthRate << "|";dPrincipalTotalPayBack += dTotalMoney1Month - dRestPrincipal * dMonthRate;// 当月利息cout << setw(10) << dRestPrincipal * dMonthRate << "|";dInterestTotal += dRestPrincipal * dMonthRate;// 当月还款cout << setw(10) << dTotalMoney1Month << "|";// 共还本金cout << setw(12) << dPrincipalTotalPayBack << "|";// 共还利息cout << setw(12) << dInterestTotal << "|";// 共还款cout << setw(12) << dPrincipalTotalPayBack + dInterestTotal << "|";// 剩余未还本金dRestPrincipal -= dTotalMoney1Month - dRestPrincipal * dMonthRate;if (dRestPrincipal < 0.0001){// 由于计算误差,最后一次可能剩余未还本金为极小的数dRestPrincipal = 0.0;}cout << setw(12) << dRestPrincipal << "|";// 提前还总金额// 以30天来计算cout << setw(12) << dRestPrincipal + dRestPrincipal * (g_dYearRate / 360) * 30<< "|";// 提前多还cout << setw(12) << dRestPrincipal * (g_dYearRate / 360) * 30 << "|";// 提前总共还if (dRestPrincipal > 0.0){// 如果都还完了,就不存在提前还了cout << setw(12) << dPrincipalTotalPayBack + dInterestTotal + dRestPrincipal + dRestPrincipal * (g_dYearRate / 360) * 30 << "|";}else{cout << setw(12) << 0.0 << "|";}cout << endl;}
}int main(int argc, char* argv[])
{const int Console_Screen_Buffer_Min_Width = 140;const int Console_Screen_Buffer_Min_Heigth = 650;CONSOLE_SCREEN_BUFFER_INFO conScrBufInfo;GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &conScrBufInfo);int nConSrcBufWidth = max(Console_Screen_Buffer_Min_Width, conScrBufInfo.dwSize.X);int nConSrcBufHeigth = max(Console_Screen_Buffer_Min_Heigth, conScrBufInfo.dwSize.Y);COORD coordDest = {nConSrcBufWidth, nConSrcBufHeigth}; SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coordDest);conScrBufInfo.srWindow.Right = nConSrcBufWidth - 1;SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, &conScrBufInfo.srWindow);cout << "输入还贷总额:";cin >> g_dTotalPrincipal;cout << "输入还贷总年数:";cin >> g_nYears;cout << "输入年利率:";cin >> g_dYearRate;int nMortgateType = 0;cout << "输入还贷方式(0:等额本金方式;1:等额本息方式):";cin >> nMortgateType;switch(nMortgateType){case 0: // 等额本金方式ShowConstantPrincipal();break;case 1: // 等额本息方式ShowConstantPrincipalInterest();break;default:break;}cout << "按任意键退出...";getch();return 0;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/45666.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年房地产抵押贷款研究报告

第一章 概述 房地产抵押贷款是一种以房地产为抵押品的贷款形式&#xff0c;包括个人和企业两种情况。个人房地产抵押贷款是指个人将名下房产作为抵押品向银行或其他金融机构申请贷款&#xff0c;而企业房地产抵押贷款则是指企业将自己名下的商业房产作为抵押品向金融机构申请贷…

使用ChatGpt写出PHP版和js版的房贷计算器,计算结果完全一致

1.创作之前的准备工作 给chatgpt投喂一些数据&#xff0c;然后设定角色&#xff0c; 如图1PHP版本数据头诶&#xff1a; 如图2 javascript数据投喂 2.chatgpt创建的代码实现过程&#xff1a; 抱歉&#xff0c;我是语言模型AI&#xff0c;并不具备编写和执行代码的能力。以下仅…

购房、提前还款

南京网上房地产&#xff1a; http://www.njhouse.com.cn/2016/ 全市商品房销售公示&#xff1a; http://newhouse.njhouse.com.cn/kpgg/ -------------------------------------------------------------------------------------------------------------------------- …

编个程序来计算怎么还房贷最合适

在购房过程中&#xff0c;关于房贷的决策肯定困扰着很多想买房的读者&#xff0c;比如下面这些非常细节的问题。 首付多点好&#xff0c;还是少点好&#xff1f;贷款30年好&#xff0c;还是15年好&#xff1f;是提前还款合适&#xff0c;还是按计划还完合适&#xff1f; 确实&a…

还在头疼每月房贷还款?这个房贷计算机让你一目了然

摘要&#xff1a;通过楼市小程序上贷款计算器等工具人们可以很容易的了解每期还款本金、不同还款方式的利息差异、提前还款节省利息等问题。 本文分享自华为云社区《房贷计算器-从原理、计算到提前还款和可视化》&#xff0c;作者&#xff1a; 蜉蝣与海 。 前言 最近各地楼市…

突然想分析下房贷利率及利息计算

由于博主近期有购房意向&#xff0c;毕竟是首套房&#xff0c;突然对LPR感兴趣了 其实...博主也是想利益最大话&#xff0c;所以就稍微研究了一下LPR及利息计算。 只要你认真看完这篇文章&#xff0c;各位观众也能轻松了解自己的钱花哪去了 首先&#xff0c;需要了解下什么是LP…

【Excel】可浮动利率(LPR)和提前还款的房贷计算器

1 灵感来源 网上有现成的计算器&#xff0c;为什么还要自己做&#xff1f; 因为网页版的房贷计算器看不到过程&#xff0c;不知其所以然&#xff0c;不知道能不能完全信任。 加上朋友咨询提前还款的问题&#xff0c;又LPR开始执行&#xff0c;从现实和书里汲取了灵感&#xff…

用Python让蔡徐坤在我的命令行里打篮球~技术流追星!

「2019 Python开发者日」倒计时三天&#xff0c;请扫码咨询 ↑↑↑ 作者 | 雇个城管打天下&#xff0c;理工男一枚。南京大学软件工程系硕士&#xff0c;一个还在做着拥有十万读者梦的互联网新人&#xff0c;或许一篇文章无法获得你的关注&#xff0c;但突然梦想觉醒的我还在努…

「Python网络编程」如何让蔡徐坤同时唱跳rap篮球/初识多线程(二)

博主前言&#xff1a; 通过第一篇文章的学习&#xff0c;读者已经认识了网络编程中的套接字编程&#xff0c;已经具备了实现基于TCP协议和基于UDP协议网络编程中客户端的实现。第二篇文章打算让读者感受一下多线程的魅力&#xff0c;通过仔细阅读本篇文章完全可达到一文入门多线…

蔡徐坤用户画像

来源&#xff1a;挖数 作者&#xff1a;挖数 互联网行业经常会做用户调研&#xff0c;通过线下访谈和线上埋点等方式收集用户数据后&#xff0c;最终形成产品主流用户的性别、年龄、职业、喜好、城市等标签数据&#xff0c;这个过程称为“用户画像”。 如果蔡徐坤是一款互联网产…

小文智能结合ChatGPT的产业未来

最近几个月&#xff0c;由人工智能实验室OpenAI发布的对话式大型语言模型ChatGPT在国内外各大平台掀起了一阵AI狂潮。短短几天时间&#xff0c;其用户量就突破了百万大关&#xff0c;注册用户之多一度导致服务器爆满。 继AI画图之后&#xff0c;ChatGPT成为了新的顶流&#xf…

chatgpt赋能python:Python中绘制图形

Python中绘制图形 Python有很多强大的库可以用来绘制各种形式的图形。在这篇文章中&#xff0c;我们将介绍几个最常用的库&#xff0c;包括Matplotlib、Seaborn和Plotly。我们还将介绍如何用这些库绘制各种不同类型的图形。 Matplotlib Matplotlib是一个基于Python的绘图库&…

大模型带来的Web复兴,会是昙花一现吗?

大家是不是对GPT、对话式AI、生成式AI之类的话题&#xff0c;已经有点审美疲劳了&#xff1f; 写这篇文章之前&#xff0c;我有点犹豫&#xff0c;究竟还要不要接着讨论GPT了。最终决定写&#xff0c;是觉得个人用户、开发者&#xff0c;以及正在紧锣密鼓训大模型的AI公司和云厂…

【主流Chat模型的申请入口和方法】

主流Chat模型的申请入口和方法 一、申请New Bing二、申请内测文心一言三、申请内测Claude四、谷歌家的Bard五、Adobe Firefly六、GitHub Copilot chat七、通义千问八、360智脑一、申请New Bing 注册一个 outlook 邮箱,很简单,2分钟就可搞定~下载 Edge DEV 浏览器,用刚刚的邮…

券商要知道的港美股软件交易系统板块展示图

目前&#xff0c;国内做港美股软件开发的公司不超过5家&#xff0c;他们中不乏有些是行业的领头者&#xff0c;服务和技术可以说能让券商感到满意的&#xff0c;其中也有刚入门的技术不成熟&#xff0c;从设计上不够科学、系统的稳定性&#xff0c;也没有那么好。 一套完整的港…

用AkShare库获取A股股票数据—获取实时A股数据

前面给大家介绍了如何用Tushare获取A股股票数据&#xff0c;但是现在使用Tushare会受到积分限制&#xff0c;没有获得积分使用起来也麻烦。今天再给大家介绍一个免费的开源数据库AKShare。 AKShare 是基于 Python 的财经数据接口库, 目的是实现对股票、期货、期权、基金、外汇…

用AkShare获取沪深京A股所有股票历史数据

前面章节已经介绍了如何用AkShare调用A股实时的数据&#xff0c;但是在我们量化投资过程中&#xff0c;经常会需要用到全量数据&#xff08;即所有A股的历史数据&#xff09;。接下来我们讲讲用AkShare获取A股所有股票历史数据。 首先&#xff0c;我们通过AkShare的东财实时行情…

IOS 股票K线图的实现

2015-09-04 by 木易哥哥  智者精选&#xff0c;每天获取励志认知能量 www.5izhjx.com 写了lines、RKLineView、getData三个对象完成实现。 首先开始调用 rkLine [[RKLineViewalloc]init]; CGRect frame riKView.frame; frame.origin CGPointMake(0,5); frame.size CGSizeM…

【ChatGPT里的平行宇宙

除非你一直生活在岩石下&#xff0c;否则你肯定听说过ChatGP。 你可能知道它在解决 IQ 测试、解决 leetcode 问题或帮助人们编写 LateX 方面的能力。 它是人们检索各种信息和解决繁琐任务&#xff08;如文案写作&#xff09;的绝佳资源&#xff01; 今天&#xff0c;Frederic …

AIGC将颠覆设计界?!今晚直播间解密AIGC之图像生成史

从DeepFake、风格迁移到 Midjourney、DALLE ... AIGC的应用一次又一次带给我们惊喜 这些背后的蕴藏着哪些原理&#xff1f; 赶快加入AIGC图像生成直播课&#xff01; 探索AI生成艺术的奥秘 2月28日-3月7日每周二晚8点 系列直播课「扫码报名」啦&#xff01; 扫描下方二维码&…