package com.shove.util;
import java.text.DecimalFormat;
public class ExcelRateUtil {
/**
* 按月还款
* excel 中rate()函数
* @param a 现值
* @param b 年金
* @param c 期数
* @param cnt 循环次数
* @param ina 精确到小数点后10位
* @return
*/
public static double excelRate(double a,double b,double c,int cnt,int ina){
double rate = 1,x,jd = 0.1,side = 0.1,i = 1;
do{
x = a/b - (Math.pow(1+rate, c)-1)/(Math.pow(rate+1, c)*rate);
if(x*side>0){side = -side;jd *=10;}
rate += side/jd;
}while(i++<cnt&&Math.abs(x)>=1/Math.pow(10, ina));
if(i>cnt)return Double.NaN;
return rate;
}
/**
* 每月付息,到期还本
* @param planTotal
* @param putIn
* @param time 月份
* 年平均收益率 = (预计到期本金收益和 / 计划投资金额) ^ (1 / 投资年限) - 1
* @return
*/
public static double rateTotal(double planTotal,double putIn,int time){
float year = time*1.0f / 12;//月份转换成年
double rate = Math.pow(planTotal/putIn, 1/year) - 1;
return rate;
}
}