鸿蒙多功能工具箱开发实战(十五)-汇率换算与理财计算开发
鸿蒙多功能工具箱开发实战(十五)-汇率换算与理财计算开发前言汇率换算和理财计算是财务工具的重要组成部分。本文将讲解汇率换算、理财收益计算、房贷车贷计算等功能实现。一、汇率换算1.1 汇率数据结构exportinterfaceCurrency{code:string// 货币代码name:string// 货币名称symbol:string// 货币符号rate:number// 对人民币汇率}exportconstCURRENCIES:Currency[][{code:CNY,name:人民币,symbol:¥,rate:1},{code:USD,name:美元,symbol:$,rate:7.2},{code:EUR,name:欧元,symbol:€,rate:7.8},{code:GBP,name:英镑,symbol:£,rate:9.1},{code:JPY,name:日元,symbol:¥,rate:0.048},{code:KRW,name:韩元,symbol:₩,rate:0.0054},{code:HKD,name:港币,symbol:HK$,rate:0.92},{code:TWD,name:新台币,symbol:NT$,rate:0.22}]exportclassExchangeRateConverter{staticconvert(amount:number,fromCurrency:Currency,toCurrency:Currency):number{// 先转换为人民币再转换为目标货币constcnyAmountamount*fromCurrency.ratereturncnyAmount/toCurrency.rate}}二、理财计算2.1 定期存款计算exportclassDepositCalculator{/** * 计算定期存款收益 */staticcalculate(params:{principal:number// 本金rate:number// 年利率%years:number// 存期年compound:boolean// 是否复利}):{interest:number// 利息total:number// 本息合计yearlyInterest:number[]// 每年利息}{constyearlyInterest:number[][]if(params.compound){// 复利计算letcurrentparams.principalfor(leti0;iparams.years;i){constinterestcurrent*params.rate/100yearlyInterest.push(interest)currentinterest}return{interest:current-params.principal,total:current,yearlyInterest}}else{// 单利计算constinterestparams.principal*params.rate/100*params.yearsfor(leti0;iparams.years;i){yearlyInterest.push(params.principal*params.rate/100)}return{interest,total:params.principalinterest,yearlyInterest}}}}2.2 基金定投计算exportclassFundInvestmentCalculator{/** * 计算基金定投收益 */staticcalculate(params:{monthlyAmount:number// 每月投入months:number// 投资月数annualReturn:number// 预期年化收益率%}):{totalInvest:number// 总投入totalValue:number// 最终价值totalReturn:number// 总收益returnRate:number// 收益率}{constmonthlyReturnparams.annualReturn/100/12consttotalInvestparams.monthlyAmount*params.months// 定投终值公式consttotalValueparams.monthlyAmount*((Math.pow(1monthlyReturn,params.months)-1)/monthlyReturn)*(1monthlyReturn)consttotalReturntotalValue-totalInvestconstreturnRatetotalReturn/totalInvest*100return{totalInvest,totalValue:Math.round(totalValue*100)/100,totalReturn:Math.round(totalReturn*100)/100,returnRate:Math.round(returnRate*100)/100}}}三、贷款计算3.1 等额本息计算exportclassLoanCalculator{/** * 等额本息计算 */staticcalculateEqualPayment(params:{principal:number// 贷款本金annualRate:number// 年利率%years:number// 贷款年限}):{monthlyPayment:number// 月供totalPayment:number// 还款总额totalInterest:number// 利息总额schedule:Arrayany// 还款计划}{constmonthlyRateparams.annualRate/100/12constmonthsparams.years*12// 月供公式constmonthlyPaymentparams.principal*monthlyRate*Math.pow(1monthlyRate,months)/(Math.pow(1monthlyRate,months)-1)consttotalPaymentmonthlyPayment*monthsconsttotalInteresttotalPayment-params.principal// 生成还款计划constschedulethis.generateSchedule(params.principal,monthlyRate,months,monthlyPayment)return{monthlyPayment:Math.round(monthlyPayment*100)/100,totalPayment:Math.round(totalPayment*100)/100,totalInterest:Math.round(totalInterest*100)/100,schedule}}/** * 等额本金计算 */staticcalculateEqualPrincipal(params:{principal:numberannualRate:numberyears:number}):{firstPayment:number// 首月还款lastPayment:number// 末月还款totalPayment:numbertotalInterest:numberschedule:Arrayany}{constmonthlyRateparams.annualRate/100/12constmonthsparams.years*12constmonthlyPrincipalparams.principal/months// 首月还款constfirstPaymentmonthlyPrincipalparams.principal*monthlyRate// 末月还款constlastPaymentmonthlyPrincipalmonthlyPrincipal*monthlyRate// 总利息consttotalInterest(params.principalmonthlyPrincipal)*months/2*monthlyRateconsttotalPaymentparams.principaltotalInterestreturn{firstPayment:Math.round(firstPayment*100)/100,lastPayment:Math.round(lastPayment*100)/100,totalPayment:Math.round(totalPayment*100)/100,totalInterest:Math.round(totalInterest*100)/100,schedule:[]}}privatestaticgenerateSchedule(principal:number,monthlyRate:number,months:number,monthlyPayment:number):Arrayany{constschedule[]letremainingprincipalfor(leti1;imonths;i){constinterestremaining*monthlyRateconstprincipalPartmonthlyPayment-interest remaining-principalPart schedule.push({month:i,payment:Math.round(monthlyPayment*100)/100,principal:Math.round(principalPart*100)/100,interest:Math.round(interest*100)/100,remaining:Math.max(0,Math.round(remaining*100)/100)})}returnschedule}}四、界面实现EntryComponentstruct LoanCalculatorPage{Stateprincipal:string1000000Staterate:string4.9Stateyears:string30Stateresult:anynullbuild(){Column(){NavBar({title:房贷计算器})// 输入区域Column(){this.InputRow(贷款金额,this.principal,(v)this.principalv,万元)this.InputRow(年利率,this.rate,(v)this.ratev,%)this.InputRow(贷款年限,this.years,(v)this.yearsv,年)}Button(计算).onClick(()this.calculate())if(this.result){Column(){Text(月供:${this.result.monthlyPayment}元).fontSize(24).fontWeight(FontWeight.Bold)Row(){Text(还款总额:${this.result.totalPayment}元)Text(利息总额:${this.result.totalInterest}元)}}}}}privatecalculate(){this.resultLoanCalculator.calculateEqualPayment({principal:parseFloat(this.principal)*10000,annualRate:parseFloat(this.rate),years:parseInt(this.years)})}}图1 汇率计算界面展示五、高级理财计算5.1 理财计算流程图定期存款基金定投等额本息等额本金输入本金和利率选择计算类型计算复利计算定投收益计算月供计算首月月供返回本息合计返回还款计划5.2 复利计算// 复利计算functioncompoundInterest(principal:number,rate:number,years:number,frequency:number1):number{constnfrequency*yearsconstrrate/frequencyreturnprincipal*Math.pow(1r,n)}5.3 基金定投计算functionfundInvestment(params:{monthlyAmount:numbermonths:numberannualReturn:number}):FundResult{const{monthlyAmount,months,annualReturn}paramsconstmonthlyReturnannualReturn/12consttotalCostmonthlyAmount*monthsconsttotalValuemonthlyAmount*((Math.pow(1monthlyReturn,months)-1)/monthlyReturn)*(1monthlyReturn)return{totalCost,totalValue,profit:totalValue-totalCost}}六、汇率换算优化6.1 汇率缓存classExchangeRateCache{privatestaticrates:Mapstring,numbernewMap()privatestaticlastUpdate:number0staticasyncgetRate(from:string,to:string):Promisenumber{constkey${from}-${to}returnthis.rates.get(key)||1}}七、单元测试describe(LoanCalculator,(){it(should calculate equal payment correctly,(){constresultLoanCalculator.calculateEqualPayment({principal:1000000,annualRate:0.049,years:30})expect(result.monthlyPayment).toBeGreaterThan(0)})})八、小结本文详细讲解了财务计算工具✅ 汇率换算与缓存✅ 定期存款计算✅ 基金定投计算✅ 等额本息贷款✅ 等额本金贷款✅ 复利计算✅ 单元测试覆盖系列文章导航下期预告鸿蒙多功能工具箱开发实战(十六)-实时行情数据获取

相关新闻

Ubuntu虚拟化与KVM管理

Ubuntu虚拟化与KVM管理

Ubuntu虚拟化与KVM管理 一、虚拟化概述 1.1 什么是虚拟化 虚拟化是一种技术,允许在单个物理服务器上运行多个独立的虚拟环境(虚拟机)。每个虚拟机都有自己的操作系统、应用程序和资源分配。 虚拟化的优势: 资源利用率高:充分利用物理服务器资源 隔离性强:虚拟机之间相…

2026/7/23 23:20:51 阅读更多 →
鸿蒙 ArkTS 实战:随身行李称重的限重解析、物品清单、启用状态与剩余重量

鸿蒙 ArkTS 实战:随身行李称重的限重解析、物品清单、启用状态与剩余重量

鸿蒙 ArkTS 实战:随身行李称重的限重解析、物品清单、启用状态与剩余重量 前言 随身行李称重是一个基于 ArkTS 和 ArkUI 声明式 UI 的鸿蒙单页项目,入口文件位于 entry/src/main/ets/pages/Index.ets。 本文围绕 随身行李重量管理 场景,拆解…

2026/7/23 23:20:51 阅读更多 →
Ubuntu开发环境搭建(Python-Go-Rust)

Ubuntu开发环境搭建(Python-Go-Rust)

Ubuntu开发环境搭建(Python/Go/Rust) 一、开发环境概述 1.1 为什么需要搭建开发环境 一个良好的开发环境是高效编程的基础,它应该具备以下特点: 统一的工具链:所有开发人员使用相同版本的工具 快速部署:能够快速搭建和复制开发环境 隔离性:不同项目之间互不干扰 可扩…

2026/7/23 23:20:51 阅读更多 →

最新新闻

CVE_2020_26259 任意文件删除

CVE_2020_26259 任意文件删除

CVE-2020-26259 任意文件删除漏洞深度剖析 漏洞概述CVE-2020-26259 是一个影响 xstream 库(Java 中用于序列化 XML 数据的流行库)的严重安全漏洞。该漏洞允许攻击者通过构造恶意的 XML 输入,实现任意文件删除。xstream 在 1.4.14 版本之前存…

2026/7/23 23:29:04 阅读更多 →
请假流程:六款.NET工作流引擎实现方式对比

请假流程:六款.NET工作流引擎实现方式对比

请假请流程:六款.NET工作流引擎实现方式对比对象:Elsa Workflows、Workflow Core、WorkflowEngine.NET、CCFlow、StepWise、Slickflow 对照需求:一份「人人可发起」的简单请假审批(含天数分支、表单附件、反馈申请人) …

2026/7/23 23:28:04 阅读更多 →
【从0开发一个 Agent】第十章:Prompt Engineering 工程化

【从0开发一个 Agent】第十章:Prompt Engineering 工程化

在前面的章节中,我们已经为 AI Agent 赋予了工具调用、长期记忆和 RAG 知识库等强大能力。但你是否发现,随着功能模块的堆叠,System Prompt 变得越来越臃肿,Agent 的行为也开始变得不稳定?有时它会忘记 RAG 的约束&…

2026/7/23 23:28:04 阅读更多 →
2026年7月20日-7月26日(gis视频教程第一季+ue独立游戏)

2026年7月20日-7月26日(gis视频教程第一季+ue独立游戏)

根据百日计划, 7月20日–7月26日,gis视频教程第一季1.16-1.20,,uec和ue肉鸽蓝图每天各一节,并改造蓝图为c 即, 周一:gis视频教程第一季1.16,uec基础p21,ue肉鸽蓝图p21,并…

2026/7/23 23:27:03 阅读更多 →
机械故障诊断中的四维几何融合技术解析

机械故障诊断中的四维几何融合技术解析

1. 项目概述:当机械故障诊断遇上四维几何融合在工业设备监测领域,机械故障诊断一直是个既关键又棘手的难题。传统方法往往受限于单一特征提取维度,就像只用一把尺子测量复杂的三维物体。我们这次要探讨的方法,则像给工程师配备了一…

2026/7/23 23:27:03 阅读更多 →
元初混沌 6G 全域通感一体化体系架构 第一卷 第五十三篇 太赫兹链路五行损耗动态补偿

元初混沌 6G 全域通感一体化体系架构 第一卷 第五十三篇 太赫兹链路五行损耗动态补偿

第五十三篇 太赫兹链路五行损耗动态补偿承启前置说明第五十二篇完成 RIS 智能超表面五行调衡架构建模,构建了「五行内生自衡 RIS 外场主动调衡」双层稳态调控体系,实现场域波束、信号、组网、杂波、资源五大维度失衡的主动纠偏与裕度拓展。前述篇章的调…

2026/7/23 23:27:03 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻