微信小程序 房贷计算器 js代码终极版

news2024/11/23 15:40:43

这里写目录标题

  • 展示图
  • 1.在utils 中创建文件calculateMortgage.ts
  • 2. 在需要使用的地方引入并传参

展示图

在这里插入图片描述

1.在utils 中创建文件calculateMortgage.ts

/** 
    假设房贷本金是60万,贷款年利率为4.8%即月利率为0.4%,分20年即240期偿还,等额本金还款,那么:
    1、每月应还本金=600000/240=2500元;
    2、首月应还利息=600000*0.4%=2400元,首月还款金额=2500+2400=4900元;
    3、次月应还利息=(600000-2500)*0.4%=2390元,次月还款金额=2500+2390=4890元;
    可见,等额本金的利息、月还款额均是以10元/月依次递减。
    4、总利息=(240+1)*600000*0.4%/2=289200元。
    以上就是关于“房贷等额本金算法”的相关内容,希望能对大家有所帮助。
*/
// 等额本金 LoanBenJin: number, yearStages: number, yearRates: number
export const averageCapital = (LoanBenJin: number, yearStages: number, yearRates: number) => {
    let benJin = LoanBenJin * 10000        // 总价格
    let monthStage = yearStages * 12       // 总期数
    let LoanYearRate = yearRates           // 总年利率
    let monthRates = (LoanYearRate) / 12 / 100   // 每月利率

    let moneyPrincipal = benJin / monthStage     // 1、每月应还本金=600000/240=2500元;


    let lists = []  // 定义数组用于装载列表
    var finishLiXiTotal = 0;              // 已还利息总和
    let unfinishedBenJinTotal =  benJin   // 还剩下本金总和
    var finishedBenJinTotal = 0;          // 已还本金
    for (var i = 0; i < monthStage; i++) {
        // 2、首月应还利息=600000*0.4%=2400元,首月还款金额=2500+2400=4900元;
        let needLiXi = (benJin - (i * moneyPrincipal)) * monthRates
        // 已还本金总和
        finishedBenJinTotal = doDanWei2(moneyPrincipal*(i+1))
        // 未还本金
        unfinishedBenJinTotal = doDanWei2(benJin - finishedBenJinTotal)
        // 利息总和
        finishLiXiTotal = doDanWei2(finishLiXiTotal + needLiXi)
        let k = {
            key: i + 1,
            title: `第${i + 1}期`,
            currentMonthTotal: doDanWei2(moneyPrincipal + needLiXi), // 当月需要还款总金额 =  当月需要还的本金 + 当月需要还的利息
            currentMonthBenJin: doDanWei2(moneyPrincipal),           // 当月需要还的本金
            currentMonthLiXi: doDanWei2(needLiXi),                   // 当月需要还的利息
            finishedBenJinTotal:doDanWei2(moneyPrincipal*(i+1)),       // 已还款本金总和
            unfinishedBenJinTotal :doDanWei2(unfinishedBenJinTotal),   // 还剩下本金总和
            finishLiXiTotal: doDanWei2(finishLiXiTotal),               // 已还利息总和
        }

        lists.push(k)
    }
    // 可见,等额本金的利息、月还款额均是以10元/月依次递减。
    // 4、总利息=(240+1)*600000*0.4%/2=289200元。
    let finishLiXiTotalAll = (monthStage + 1) * benJin * monthRates / 2
    // 以上就是关于“房贷等额本金算法”的相关内容,希望能对大家有所帮助。

    let returnInfo = {
        subKey:'principals',
        subTitle:'等额本金',
        benJin: benJin,                     // 借款额度
        bigBenJin:LoanBenJin,               // 大写本金
        yearStages:yearStages,              // 年总期数
        monthStage: monthStage,             // 月总期数
        yearRates:yearRates,                // 年利率
        monthRates:monthRates,              // 🈷️利率
        finishedTotal: doDanWei2(benJin + finishLiXiTotal), // 需要还的总钱数 = 本金 + 利息
        liXi: finishLiXiTotalAll,           // 总利息
        lists: lists,                       // 分期列表详情
    }
    return returnInfo
}

// // 等额本息
export const principalInterest = (LoanBenJin: number, yearStages: number, yearRates: number) =>{
    let benJin = LoanBenJin * 10000                  // 总价格
    let monthStage = yearStages * 12                 // 总期数
    let monthRates = (yearRates) / 12 / 100          // 每月利率

    //  1.每月还款额 = 总贷款额 X 月利率 X ( 1+月利率 ) ^ 还款期数 / ( ( 1+月利率 ) ^ 还款期数 -1 )
    var currentMonthTotal = doDanWei2((benJin * monthRates * Math.pow( (1+monthRates),monthStage) ) / ( Math.pow( (1+monthRates),monthStage ) -1))

    var finishedBenJinTotal = 0;          // 已还本金
    var finishLiXiTotal = 0;              // 已还利息总和
    let unfinishedBenJinTotal =  benJin   // 还剩下本金总和
    let lists = []                        // 定义数组用于装载列表
    for(var i =1; i < monthStage+1 ;i++){
        // 当月需要还的利息
        var currentMonthLiXi = (benJin - finishedBenJinTotal) * monthRates;
        //  当月需要还的本金
        var currentMonthBenJin = currentMonthTotal - currentMonthLiXi;
        //  已还款本金总和
        finishedBenJinTotal +=  currentMonthBenJin;
        //  已还本金总和
        unfinishedBenJinTotal = benJin - finishedBenJinTotal;
        //  已还利息总和
        finishLiXiTotal += currentMonthLiXi;

         let k = {
            key: i,
            title: `第${i}期`,
            currentMonthTotal:doDanWei2(currentMonthTotal),    // 当月需要还款总金额 =  当月需要还的本金 + 当月需要还的利息
            currentMonthBenJin: doDanWei2(currentMonthBenJin), // 当月需要还的本金
            currentMonthLiXi: doDanWei2(currentMonthLiXi),     // 当月需要还的利息
            finishedBenJinTotal:doDanWei2(finishedBenJinTotal),        // 已还款本金总和
            unfinishedBenJinTotal :doDanWei2(unfinishedBenJinTotal),   // 还剩下本金总和
            finishLiXiTotal: doDanWei2(finishLiXiTotal),               // 已还利息总和
        }
        lists.push(k)
    }

    let returnInfo = {
        subKey:'averages',
        subTitle:'等额本息',
        benJin: benJin,                     // 借款额度
        bigBenJin:LoanBenJin,               // 大写本金
        yearStages:yearStages,              // 年总期数
        monthStage: monthStage,             // 月总期数
        yearRates:yearRates,                // 年利率
        monthRates:monthRates,              // 🈷️利率
        finishedTotal: doDanWei2(benJin + finishLiXiTotal), // 需要还的总钱数 = 本金 + 利息
        liXi: doDanWei2(finishLiXiTotal),   // 总利息
        lists: lists,                       // 分期列表详情
    }
    return returnInfo
}



// 计算金额
const doDanWei = (num: number) => {
    if (Math.floor(num) === num) return num
    let k = Number((Number(num.toFixed(2)) + 0.01).toFixed(2))
    return k
}
// 计算金额
const doDanWei2 = (num: number) => {
    if (Math.floor(num) === num) return num
    let k = Number(num.toFixed(2))
    return k
}
export const doDanWei1 = (num: number) => {
    if (Math.floor(num) === num) return num
    let k = Number(num.toFixed(2))
    return k
}


2. 在需要使用的地方引入并传参

import { principalInterest, averageCapital } from '../../utils/calculateMortgage'

let averages = averageCapital(LoanBenJin, this.data.yearStages, yearRate) // 总金额W 、分期年限、年率利

let principals = principalInterest(LoanBenJin, this.data.yearStages, yearRate) // 总金额W、分期年限、年率利

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV(三十二):轮廓检测

1.轮廓概念介绍 在计算机视觉和图像处理领域中&#xff0c;轮廓是指在图像中表示对象边界的连续曲线。它是由一系列相邻的点构成的&#xff0c;这些点在边界上连接起来形成一个封闭的路径。 轮廓层级&#xff1a; 轮廓层级&#xff08;Contour Hierarchy&#xff09;是指在包含…

哭了,python自动化办公,终于支持 Mac下载了

想了解更多精彩内容&#xff0c;快来关注程序员晚枫 大家好&#xff0c;这里是程序员晚枫&#xff0c;小红薯/小破站也叫这个名。 在我的主页发布的免费课程&#xff1a;给小白的《50讲Python自动化办公》&#xff0c;一直在更新中&#xff0c;昨晚12点多&#xff0c;有朋友在…

1987-2021年全国31省专利申请数和授权数

1987-2021年全国31省国内三种专利申请数和授权数 1、时间&#xff1a;1987-2021年 2、来源&#xff1a;整理自国家统计局、科技统计年鉴、各省年鉴 3、范围&#xff1a;31省市 4、指标&#xff1a;国内专利申请受理量、国内发明专利申请受理量、国内实用新型专利申请受理量…

PCIe 5.0验证实战,经常遇到的那些问题?

PCIe 5.0是当前最新的PCI Express规范&#xff0c;提供了更高的数据传输速率和更大的带宽。 PCIe是连接两个芯片的接口&#xff0c;负责两个芯片通信, 连接芯片的通路为高速SerDes, 称之为链路。PCIe确保通路正常-链路训练状态机。PCIe在芯片内部是非常重要的一个大的模块&…

php常用算法

许多人都说 算法是程序的核心&#xff0c;一个程序的好于差,关键是这个程序算法的优劣。作为一个初级phper&#xff0c;虽然很少接触到算法方面的东西 。但是对于冒泡排序&#xff0c;插入排序&#xff0c;选择排序&#xff0c;快速排序四种基本算法&#xff0c;我想还是要掌握…

论机器生产内容 MGC 与新数字时代的两个世界

摘要&#xff1a;本文从新数字时代人类社会的两种存在形态&#xff1a;数字世界&#xff08;元宇宙&#xff09;与物理世界&#xff08;时空宇宙&#xff09;&#xff0c;以及新兴数字产业&#xff1a;机器生产内容MGC的发展、现状与未来出发&#xff0c;通过对新数字时代及两个…

Mysql 入门篇之二进制安装

文章目录 Mysql 5.7 入门安装卸载自带组件下载二进制包安装配置 Mysql 8.0 入门安装卸载自带组件下载二进制包安装配置 Mysql 5.7 入门安装 环境说明&#xff1a;CentOS Linux release 7.6.1810 (Core) 4核4G 卸载自带组件 卸载自带的mysql相关组件 rpm -qa | grep mysql rpm…

jemalloc 5.3.0源码总结

注意&#xff1a;jemalloc 的最新版本里没有所谓的 huge class&#xff0c;bin 中slab外面也不再套一个run的概念了&#xff0c;看其它人分享的文章时需要注意。 简述 用户侧通过 tcache 来访问&#xff0c;tcache 是一个线程的申请又释放的对象的缓存&#xff0c;它绑定了一…

紫光电子档案管理系统存在SQL注入漏洞(漏洞复现)

文章目录 紫光电子档案管理系统存在SQL注入漏洞&#xff08;漏洞复现&#xff09;0x01 前言0x02 漏洞描述0x03 影响范围0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 紫光电子档案管理系统存在SQL注入漏洞&#xff08;漏洞复现&#xff09; 0x01 前言 本次测试仅…

数据结构与算法-----指针与结构体

目录 前言 指针 定义 示例1&#xff08;访问修改数据&#xff09;&#xff1a; 示例2&#xff08;野指针&#xff09;&#xff1a; 示例3&#xff08;动态空间分配问题&#xff09;&#xff1a; 示例4&#xff08;字符串赋值错误问题&#xff09;&#xff1a; 示例5&am…

2023年限售股解禁研究报告

第一章 概述 解禁是指限售流通股过了限售承诺期&#xff0c;可以在二级市场自由买卖的过程。根据流通性质&#xff0c;可将上市公司股份分为有限售条件的流通股&#xff08;“限售流通股”&#xff09;及无限售条件的流通股&#xff08;“流通股”&#xff09;。 限售流通股指…

案例实战-Spring boot Web

准备工作 需求&环境搭建 需求&#xff1a; 部门管理&#xff1a; 查询部门列表 删除部门 新增部门 修改部门 员工管理 查询员工列表&#xff08;分页、条件&#xff09; 删除员工 新增员工 修改员工 环境搭建 准备数据库表&#xff08;dept、emp&#xff09; -- 部门管理…

NLP(3)--GAN

目录 一、概述 二、算法过程 三、WGAN 1、GAN的不足 2、JS散度、KL散度、Wasserstein距离 3、WGAN设计 四、Mode Collapse and Mode Dropping 1、Mode Collapse 2、Mode Dropping 3、FID 四、Conditional GAN 一、概述 GAN&#xff08;Generative Adversial Networ…

【云原生进阶之PaaS中间件】第一章Redis-1.7发布订阅模式

1 Redis 发布订阅 1.1 概述 发布订阅模式&#xff08;Publish-Subscribe Pattern&#xff09;是一种消息传递模式&#xff0c;其基本原理是消息的发送者&#xff08;发布者&#xff09;不会直接发送消息给特定的接收者&#xff08;订阅者&#xff09;&#xff0c;而是将消息分…

基于SpringBoot的无忌在线考试系统(源码+讲解+调试运行)做毕设课设均可

技术栈 前后端分离 前端使用: Vue Element Plus 后端使用: SpringBoot Mysql8.0 Mybatis-Plus 功能 分为 管理员端 和 老师端 和 学生端 管理员端 登陆页 ​科目管理 查看所有科目 ,增加 ,修改 ,删除科目 , 模糊搜索课程 ​考试管理 查看所有考试 ,增加 ,修改 ,删除考试 题库…

Linux之Shell变量和引用

目录 深入认识变量 什么是变量 变量的名称 组成 规则 变量的类型 原则 shell的变量数据类型 变量定义 原则 格式 案例 自定义变量 定义 引用变量的值 查看变量 环境变量 定义 定义环境变量 案例 --- 三种方法定义 对比 shell环境变量存储的文件 位置变量…

Python - PyQt6、QDesigner、pyuic5-tool 安装使用

Python 开发可视化界面可以使用原生的 tkinter&#xff0c;但是原生框架使用起来颇为不方便&#xff0c;所以最流行的还是QT UI框架&#xff0c;QT是使用C语言开发&#xff0c;Python 想使用需要对其进行封装&#xff0c;所以就出现了PyQt框架&#xff0c;这个框架使用极其方便…

c语言练习44:深入理解strstr

深入理解strstr strstr作用展示&#xff1a; #include <stdio.h> #include <string.h> int main() {char str[] "This is a simple string";char* pch;pch strstr(str, "simple");/*strncpy(pch, "sample", 6);*/printf("%s…

向量数据库Milvus Cloud核心组件再升级,主打就是一个低延迟、高准确度

支持 ScaNN 索引 Faiss 实现的 ScaNN,又名 FastScan,使用更小的 PQ 编码和相应的指令集可以更为友好地访问 CPU 寄存器,从而使其拥有优秀的索引性能。该索引在 Cohere 数据集,Recall 约 95% 的时候,Milvus 使用 Knowhere 2.x 版本端到端的 QPS 是 IVF_FLAT 的 7 倍,HN…

JDBC入门到精通-10w总结

JDBC核心技术 笔记是以尚硅谷讲师宋红康JDBC课程为基础&#xff0c;加入自身学习体会&#xff0c;略有修改 第1章&#xff1a;JDBC概述 JDBC是java应用程序和数据库之间的桥梁。JDBC提供一组规范&#xff08;接口&#xff09;。向上是面向应用API&#xff0c;共应用程序使用。向…