当前位置: 首页 > news >正文

PHP 之房贷计算器、组合贷

 一、等额本金

// (等额本金)
//$loanAmount=>贷款金额
//$loanPeriod=>贷款年限
//$interestRate=>贷款利息
function calculateEqualPrincipalPayment($loanAmount, $loanPeriod, $interestRate)
{$monthlyPrincipal = $loanAmount / ($loanPeriod * 12);$monthlyInterest = $loanAmount * ($interestRate / 100) / 12;$remainingAmount = $loanAmount;$result = [];for ($i = 1; $i <= $loanPeriod * 12; $i++) {$interest = $remainingAmount * ($interestRate / 100) / 12;$principal = $monthlyPrincipal;$remainingAmount -= $monthlyPrincipal;$monthlyPayment = $principal + $interest;$result[$i] = ['month' => $i,//期数'principal' => round($principal, 2),//月供本金'interest' => round($interest, 2),//月供利息'monthlyPayment' => round($monthlyPayment, 2),//月供总额'remainingAmount' => round($remainingAmount, 2),//剩余本金];}return $result;
}

二、等额本息

 

// (等额本息)
//$loanAmount=>贷款金额
//$loanPeriod=>贷款年限
//$loanPeriod=>贷款利率
function calculateEqualInstallmentPayment($loanAmount, $loanPeriod, $interestRate)
{$monthlyInterestRate = $interestRate / 12 / 100;$numOfMonthlyPayments = $loanPeriod * 12;$monthlyPayment = $loanAmount * $monthlyInterestRate * pow(1 + $monthlyInterestRate, $numOfMonthlyPayments)/ (pow(1 + $monthlyInterestRate, $numOfMonthlyPayments) - 1);$result = [];for ($i = 1; $i <= $numOfMonthlyPayments; $i++) {$interest = $loanAmount * $monthlyInterestRate;$principal = $monthlyPayment - $interest;$remainingAmount = $loanAmount - $principal;$result[$i] = ['month' => $i,//期数'principal' => round($principal, 2),//期数'interest' => round($interest, 2),//月供本金'monthlyPayment' => round($monthlyPayment, 2),//月供总额'remainingAmount' => round($remainingAmount, 2),//剩余本金];$loanAmount = $remainingAmount;}return $result;
}

三、公积金和商业贷组合贷款

// 测试组合贷款计算()等额本息
function calculateCombinationLoan($commercialLoanAmount, $commercialLoanPeriod, $commercialInterestRate, $fundLoanAmount, $fundLoanPeriod, $fundInterestRate)
{// 计算商业贷款的还款计划$commercialRepayments = calculateEqualInstallmentPayment($commercialLoanAmount, $commercialLoanPeriod, $commercialInterestRate);// 计算公积金贷款的还款计划$fundRepayments = calculateEqualInstallmentPayment($fundLoanAmount, $fundLoanPeriod, $fundInterestRate);//判断公积金和商业贷那个贷款时间长,就以那个合并$arr_ti = $commercialRepayments;$arr_ti_duan = $fundRepayments;if ($fundLoanPeriod > $commercialLoanPeriod) {$arr_ti = $fundRepayments;$arr_ti_duan = $commercialRepayments;}$newArray = [];foreach ($arr_ti as $is => $repayment) {if ($fundLoanPeriod < $commercialLoanPeriod) {$shangye_monthlyPayment = $repayment["monthlyPayment"] ?: 0;$jijin_monthlyPayment = $arr_ti_duan[$is]["monthlyPayment"] ?: 0;} else {$shangye_monthlyPayment = $arr_ti_duan[$is]["monthlyPayment"]?: 0;$jijin_monthlyPayment = $repayment["monthlyPayment"] ?: 0;}$newArray[] = ["month" => $repayment["month"],//还款期数"jijin_monthlyPayment" => round($jijin_monthlyPayment, 2),//公积金金额"shangye_monthlyPayment" => round($shangye_monthlyPayment, 2),//商贷金额"monthlyPayment" => round(($repayment["monthlyPayment"] + $arr_ti_duan[$is]["monthlyPayment"]), 2),//总还款金额"interest" => round(($repayment["interest"] + $arr_ti_duan[$is]["interest"]), 2),//总还款利息];}return $newArray;
}// 测试组合贷款计算(等额本金)
function calculatePrincipaltionLoan($commercialLoanAmount, $commercialLoanPeriod, $commercialInterestRate, $fundLoanAmount, $fundLoanPeriod, $fundInterestRate)
{// 计算商业贷款的还款计划$commercialRepayments = calculateEqualPrincipalPayment($commercialLoanAmount, $commercialLoanPeriod, $commercialInterestRate);// 计算公积金贷款的还款计划$fundRepayments = calculateEqualPrincipalPayment($fundLoanAmount, $fundLoanPeriod, $fundInterestRate);//判断公积金和商业贷那个贷款时间长,就以那个合并$arr_ti = $commercialRepayments;$arr_ti_duan = $fundRepayments;if ($fundLoanPeriod > $commercialLoanPeriod) {$arr_ti = $fundRepayments;$arr_ti_duan = $commercialRepayments;}$newArray = [];foreach ($arr_ti as $is => $repayment) {if ($fundLoanPeriod < $commercialLoanPeriod) {$shangye_monthlyPayment = $repayment["monthlyPayment"] ?: 0;$jijin_monthlyPayment = $arr_ti_duan[$is]["monthlyPayment"] ?: 0;} else {$shangye_monthlyPayment = $arr_ti_duan[$is]["monthlyPayment"]?: 0;$jijin_monthlyPayment = $repayment["monthlyPayment"] ?: 0;}$newArray[] = ["month" => $repayment["month"],"jijin_monthlyPayment" => round($jijin_monthlyPayment, 2),"shangye_monthlyPayment" => round($shangye_monthlyPayment, 2),"monthlyPayment" => round(($repayment["monthlyPayment"] + $arr_ti_duan[$is]["monthlyPayment"]), 2),"interest" => round(($repayment["interest"] + $arr_ti_duan[$is]["interest"]), 2),];}return $newArray;
}

四、可实现效果

相关文章:

PHP 之房贷计算器、组合贷

一、等额本金 // &#xff08;等额本金&#xff09; //$loanAmount>贷款金额 //$loanPeriod>贷款年限 //$interestRate>贷款利息 function calculateEqualPrincipalPayment($loanAmount, $loanPeriod, $interestRate) {$monthlyPrincipal $loanAmount / ($loanPerio…...

解决Vue+Element UI使用表单rules国际化时From表单验证信息不能实时更新

说明&#xff1a;该篇博客是博主一字一码编写的&#xff0c;实属不易&#xff0c;请尊重原创&#xff0c;谢谢大家&#xff01; 博主在工作之余开始进行自动化测试平台的开发&#xff0c;虽然已经996一个月了但是还是在使劲挤时间做这件事情&#xff0c;目前平台使用前端框架vu…...

友善之臂NanoPi NEO利用fbtft驱动点亮1.69寸ST7789V2屏幕

屏幕介绍 本文以中景园1.69寸LCD&#xff0c;驱动芯片ST7789V2该款屏幕示例&#xff0c;屏幕的分辨率为240*280 屏幕引脚说明 NanoPi NEO IO介绍 屏幕与板子的IO连接关系 屏幕NanoPi NEOGNDGNDVCC3.3VSCLPC2SDAPC0RESPG11DCPA1CSPC3BLKPA0 下载交叉编译器和linux内核源码并按教…...

MFC第三十天 通过CToolBar类开发文字工具栏和工具箱、GDI+边框填充以及基本图形的绘制方法、图形绘制过程的反色线模型和实色模型

文章目录 CControlBar通过CToolBar类开发文字工具栏和工具箱CMainFrame.hCAppCMainFrm.cppCMainView.hCMainView.cppCEllipse.hCEllipse.cppCLine.hCLine.cppCRRect .hCRRect .cpp CControlBar class AFX_NOVTABLE CControlBar : public CWnd{DECLARE_DYNAMIC(CControlBar)pro…...

Android Https

本质&#xff1a;在客户端和服务端使用非对称加密协商出一套对称密钥&#xff0c;每次发送数据前加密&#xff0c;收到后解密&#xff0c;达到加密传输 http ssl 在http之下增加了安全层&#xff0c;用于保障http的加密传输 HTTPS连接 TLS连接步骤 1.客户端发送 client h…...

Games101学习笔记2

参考博客&#xff1a;GAMES101 梳理 / 个人向图形学笔记_games101笔记_river_of_sebajun的博客-CSDN博客 lecture 05 Rasterization 1(Triangles) 光栅化 把东西画在屏幕上的过程就是光栅化的过程 视口变换 为什么模型用三角形&#xff1f; 最基本的几何平面&#xff1b;保…...

java字符串String类的常用方法

java字符串String类的常用方法 字符串的创建&#xff1a; (1)定义字符串直接赋值&#xff0c;在字符串池中开辟空间() String str1“Hello”;//在字符串池中写入字符串"hello" String str2“Hello”;//直接引用字符串池中的"Hello" System.out.println(s…...

自动化测试如何解决chrome自动更新问题

问题 调试好的自动化测试脚本&#xff0c;有时候总是在第一天或过几天就不好使了。产品并未进行功能逻辑&#xff0c;ui修改&#xff0c;一切还和调试自动化脚本的时候保持一致。运行自动化测试脚本时&#xff0c;控制台总是会在driver webdriver.Chrome()这一行报错。 问题…...

闲鱼卖货:新手容易踩坑的7个地方。赶紧看看有没有中招?

科思创业汇 大家好&#xff0c;这里是科思创业汇&#xff0c;一个轻资产创业孵化平台。赚钱的方式有很多种&#xff0c;我希望在科思创业汇能够给你带来最快乐的那一种&#xff01; 这是我以前的一个学生收到的第一个非法通知。他告诉我&#xff0c;他当时很害怕&#xff0c;…...

PowerShell 获取某目录下所有的文件、文件夹,同时对获取到的文件路径字符串进行替换处理

PowerShell 获取某目录下所有的文件、文件夹&#xff0c;同时对获取到的文件路径字符串进行替换处理 前言&#xff1a; 为了将Windows系统下的Java编译文件与linux服务器上的文件进行比较&#xff0c;故进行此文件路径的获取及路径处理。 在只有文件路径 而没有实际文件的情况下…...

JUC并发编程之线程锁(一)

目录 1.ReentrantLock(互斥锁) 2.ReentRantReaderWriterLock&#xff08;互斥读写锁&#xff09; 3.StampedLock&#xff08;无障碍锁&#xff09; 4.Condition&#xff08;自定义锁&#xff09; 5.LockSupport 问题引出&#xff1a; 由于传统的线程控制需要用到同步机制Sy…...

Android AlertDialog标题居中

网上很多做法都是使用setCustomTitle方法实现的&#xff0c;我偏不&#xff0c;因为我已经找到了标题的textView了&#xff1a; 在show了之后可以拿到标题&#xff08;注意一定是show之后才能拿得到&#xff0c;create之后拿也是空的&#xff09;&#xff1a; TextView title…...

k8s界面化平台dashboard、kubesphere、Rancher对比

k8s集群管理dashboard有很多&#xff0c;比如kuboard、官方发dashboard、kubesphere、Rancher等等。 Dashboard、KubeSphere 和 Rancher 都是流行的 Kubernetes 管理和操作界面。它们都提供了图形化的用户界面&#xff0c;以简化对 Kubernetes 集群的管理和监控。每个工具都有其…...

【字符串左旋】

字符串左旋 1.题目要求 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 2.解法&#xff1a; 设计循环使其可以旋1次&#xff0c;然后让他执行n次是一个最简单的思路&#xff1a; 函数实现&#xf…...

Docker Dirtypipe(CVE-2022-0847)漏洞复现与分析容器逃逸

安装环境 ./metarget cnv install cve-2022-0847 --verbose 原理 同脏牛&#xff0c;通过写只读内存&#xff0c;对映射的内存做篡改 EXP docker run --rm -it -v $(pwd):/exp --cap-addCAP_DAC_READ_SEARCH ubuntu如果提示 Unknown capability to add: "CAP_CAP_DAC_RE…...

python接口自动化测试框架2.0,让你像Postman一样编写测试用例,支持多环境切换、多业务依赖、数据库断言等

项目介绍 接口自动化测试项目2.0 软件架构 本框架主要是基于 Python unittest ddt HTMLTestRunner log excel mysql 企业微信通知 Jenkins 实现的接口自动化框架。 前言 公司突然要求你做自动化&#xff0c;但是没有代码基础不知道怎么做&#xff1f;或者有自动化…...

Vue.js2+Cesium1.103.0 九、淹没分析效果

Vue.js2Cesium1.103.0 九、淹没分析效果 Demo <template><divid"cesium-container"style"width: 100%; height: 100%;"><spanid"button"style"position: absolute; right: 50px; top: 50px; z-index: 999; font-size: 24px…...

SpringBoot案例-部门管理-新增

根据页面原型&#xff0c;明确需求 页面原型 需求 阅读接口文档 接口文档链接如下&#xff1a; 【腾讯文档】SpringBoot案例所需文档 https://docs.qq.com/doc/DUkRiTWVaUmFVck9N 思路分析 前端在输入要新增的部门名称后&#xff0c;会以JSON格式将数据传入至后端&#xf…...

微信小程序中背景图片如何占满整个屏幕,拉伸

不变形 1. 在页面的wxss文件中&#xff0c;设置背景图片的样式&#xff1a; page{background-image: url(图片路径);background-size: 100% 100%;background-repeat: no-repeat; }2. 在页面的json文件中&#xff0c;设置背景图片的样式&#xff1a; {"backgroundTextStyl…...

Java并发编程(四)线程同步 中 [AQS/Lock]

概述 Java中可以通过加锁&#xff0c;来保证多个线程访问某一个公共资源时&#xff0c;资源的访问安全性。Java提出了两种方式来加锁 第一种是我们上文提到的通过关键字synchronized加锁&#xff0c;synchronized底层托管给JVM执行的&#xff0c;并且在java 1.6 以后做了很多…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...