public class RATE {/*** calculateRate:类excel中的RATE函数,计算结果值为月利率,年华利率 需*12期. <br/>* rate = calculateRate(periods, payment, present_val, future_val, type,* estimate) ;* * @author guooo 2018年7月11日 上午11:13:55* @param nper*            为总投资期,即该项投资的付款期总数。* @param pmt*            为各期付款额,其数值在整个投资期内保持不变。通常 pmt 包括本金和利息,但不包括其他费用或税金。如果忽略了*            pmt,则必须包含 fv 参数。* @param pv*            为现值,即从该项投资开始计算时已经入帐的款项,或一系列未来付款当前值的累积和,也称为本金。* @param fv*            为未来值,或在最后一次付款后希望得到的现金余额,如果省略 fv,则假设其值为零,也就是一笔贷款的未来值为零。* @param type*            数字 0 或 1,用以指定各期的付款时间是在期初还是期末。 0或省略-期末|| 1-期初* @param guess*            预期利率。 如果省略预期利率,则假设该值为 10%。* @return* @since JDK 1.6*/public static double calculateRate(double nper, double pmt, double pv, double fv, double type, double guess) {//FROM MS http://office.microsoft.com/en-us/excel-help/rate-HP005209232.aspxint FINANCIAL_MAX_ITERATIONS = 20;//Bet accuracy with 128double FINANCIAL_PRECISION = 0.0000001;//1.0e-8double y, y0, y1, x0, x1 = 0, f = 0, i = 0;double rate = guess;if (Math.abs(rate) < FINANCIAL_PRECISION) {y = pv * (1 + nper * rate) + pmt * (1 + rate * type) * nper + fv;} else {f = Math.exp(nper * Math.log(1 + rate));y = pv * f + pmt * (1 / rate + type) * (f - 1) + fv;}y0 = pv + pmt * nper + fv;y1 = pv * f + pmt * (1 / rate + type) * (f - 1) + fv;// find root by Newton secant methodi = x0 = 0.0;x1 = rate;while ((Math.abs(y0 - y1) > FINANCIAL_PRECISION) && (i < FINANCIAL_MAX_ITERATIONS)) {rate = (y1 * x0 - y0 * x1) / (y1 - y0);x0 = x1;x1 = rate;if (Math.abs(rate) < FINANCIAL_PRECISION) {y = pv * (1 + nper * rate) + pmt * (1 + rate * type) * nper + fv;} else {f = Math.exp(nper * Math.log(1 + rate));y = pv * f + pmt * (1 / rate + type) * (f - 1) + fv;}y0 = y1;y1 = y;++i;}return rate;}/*** simpleCalculateRate:(这里用一句话描述这个方法的作用). <br/>** @author guooo 2018年7月12日 上午11:19:24* @param nper*            为总投资期,即该项投资的付款期总数。* @param pmt*            为各期付款额,其数值在整个投资期内保持不变。通常 pmt 包括本金和利息,但不包括其他费用或税金。如果忽略了*            pmt,则必须包含 fv 参数。* @param pv*            为现值,即从该项投资开始计算时已经入帐的款项,或一系列未来付款当前值的累积和,也称为本金。* @return* @since JDK 1.6*/public static double simpleCalculateRate(double nper, double pmt, double pv) {double fv = 0;//0或省略-期末支付double type = 0;//如果省略预期利率,则假设该值为 10%。double guess = 0.1;return calculateRate(nper, pmt, pv, fv, type, guess);}public static void main(String[] args) {System.out.println(simpleCalculateRate(12, 874.52, -10000) * 12);System.out.println(simpleCalculateRate(24, 454.67, -10000) * 12);System.out.println(simpleCalculateRate(36, 315.67, -10000) * 12);}
}

扩展阅读:

  • 学习新技术时你应当掌握的『最少必要知识』

  • 基于SpringCloud的Microservices架构实战案例

  • 基于SpringCloud的某支付产品微服务构架拆解

  • 如何从传统软件开发顺利过渡到互联网技术开发

  • 你是『眼高手低』的程序员吗

  • 怎么定位自己在团队里的角色

  • 解决问题的正确姿势

  • 你的经历不一定都能变成经验

  • 那些会阻碍程序员成长的细节[7]

  • 提高你的被动收入(睡后收入)

  • 认识区块链,认知区块链

欢迎加入我的星球

Excel中RATE函数的Java实现欢迎加入我的星球相关推荐

  1. Excel中PMT函数的Java实现

    public class PMT {/*** * 计算月供* * @param rate* 年利率 年利率除以12就是月利率* @param nper* 贷款期数,单位月 该项贷款的付款总数. * @ ...

  2. php excel 函数,php实现excel中rank函数功能的方法

    php实现excel中rank函数功能的方法 发布于 2015-10-28 18:54:25 | 77 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hyperte ...

  3. 使用Excel中PPMT函数和IPMT函数进行等额本息还款的计算方法

    在处理等额贷款业务时,用户经常需要计算贷款金额以及本金.利息等.在Excel中,使用PMT函数可以计算每期应偿还的贷款金额,使用PPMT函数和IPMT函数可以计算每期还款金额中的本金和利息.下面介绍使 ...

  4. excel的if函数中android,excel中if函数嵌套式使用教程

    exce表格数据统计函数的示例 函数统计数据步骤1:每个函数均有三个参数:database.field 和 criteria.这些参数指向函数所使用的工作表区域. 函数统计数据步骤2:除了GETPIV ...

  5. EXCEL中SUMIF函数介绍

    在EXCEL中SUMIF函数是一个常用的汇总函数,下面来介绍一下EXCEL中的SUMIF函数的使用方法. 下图是介绍该函数的简单数据数据: 此函数可以进行判定,当某数据项满足特定的条件时,将特定的数据 ...

  6. 【图文】Excel中vlookup函数的使用方法

    今天统计数据,用到了Excel中vlookup函数,第一次使用当然少不了百度,经过反复研究后,算是解决了问题,现整理成文档. 一.实现效果 Sheet1   Sheet2       注:上图中she ...

  7. Excel中Sumproduct函数的使用方法

    1.sumproduct函数的含义 1 1.Sumproduct函数的适用范围,在给定的几组数组中,然后把数组间对应的元素相乘,最后返回乘积之和. 从字面上可以看出,sumproduct有两个英文单词 ...

  8. Excel中vlookup函数的使用方法

    http://candy36.blog.163.com/blog/static/13089096200872933710998/ 想当年,Excel只学了个基本,现在才发现,其实其功能非常强大,只是还 ...

  9. 计算机中函数counta表示,excel中counta函数的使用方法

    你还在为Excel中counta函数的使用方法而苦恼吗,今天小编教你Excel中counta函数的使用方法,今天,学习啦小编就教大家在counta函数的使用方法. Excel的counta函数的使用方 ...

  10. 康轩职教计算机应用基础课件,《Excel中IF函数的应用-机器人任务》计算机应用基础职教课件.ppt...

    函数,应用,机器人,任务,计算机,基础,职教,课件函数,应用,机器人,任务,计算机,基础,职教,课件 你是机器人 口令"1" 口令"2" 规则:口令" ...

最新文章

  1. Python笔记_第四篇_高阶编程_检测_2.对类进行单元检测
  2. python2018上海脱产_python接口自动化27-urlencode编码%E6%82%A0%E6%82%A0与解码
  3. django 在保存数据前进行数据校验
  4. Windows安装梯度提升开发库LightGBM
  5. 智能安防监控解决方案,实现AI能力在安防行业落地
  6. ibatis基础(五):删除指定id的单个对象
  7. 我的敏捷、需求分析、UML、软件设计电子书 - 下载(持续更新中)
  8. cocos2d-x-3.0 build不成功
  9. 经典而常用的配乐和背景音乐合集(下)
  10. java月历_Java 日历
  11. 火云邪神ddos使用_ddos攻击器怎么用
  12. vue run dev报错 缺少package.json文件
  13. 一文读懂|什么是dToF激光雷达技术?
  14. vue2.0分页插件官方_Vue 2的最佳和完整分页插件
  15. Arrays.copyOfRange(T[] original, int from, int to)的使用说明
  16. 2020年中国经济蓝皮书(第四部分)
  17. 51信用卡的日志分析变迁史和技术细节
  18. ES修改mapping中的字段名称
  19. Android自定义华为睡眠,Android 模仿华为健康自定义 计步View
  20. WMS仓储自动化是什么?有哪些用途

热门文章

  1. 分布式高并发下,Actor模型如此优秀
  2. SpringBoot面试题一网打尽
  3. 如何24小时实时监控网站访问状态?
  4. JIRA导出工作日志到Excel
  5. matlab解韩信点兵问题,2019事业单位:巧解“韩信点兵”问题
  6. Python制作统计图形
  7. Uplift 经典模型介绍
  8. 因果推断-Uplift Model:Causal Tree
  9. 15款外贸高手都在用的邮箱工具和关键词分析工具
  10. 使用ffmpeg修改视频文件的分辨率