/**
* 银行还款计算
* @author cuiran
* @version TODO
*/
public class BankRefund {
/**
*
* 等额本金还款法【利息少,但前期还的多】
* @param totalMoeny 贷款总额
* @param rate 贷款商业利率
* @param year 贷款年限
*/
public static void principal(int totalMoney,double rate,int year){
/**
* 每月本金
*/
int totalMonth=year*12
double monthPri=totalMoney/totalMonth
/**
* 获取月利率
*/
double monRate=resMonthRate(rate)
BigDecimal b = new BigDecimal(monRate)
monRate = b.setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue()
for(int i=1i<=totalMonthi++){
double monthRes=monthPri+(totalMoney-monthPri*(i-1))*monRate
BigDecimal b1 = new BigDecimal(monthRes)
monthRes = b1.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()
System.out.println("第"+i+"月,还款为:"+monthRes)
}
}
/**
*
* 等额本息还款【利息多】
* @param totalMoeny 贷款总额
* @param rate 贷款商业利率
* @param year 贷款年限
*/
public static void interest(int totalMoney,double rate,int year){
/**
* 获取月利率
*/
double monRate=resMonthRate(rate)
/**
* 月还款本息
*/
double monInterest=totalMoney*monRate*Math.pow((1+monRate),year*12)/(Math.pow((1+monRate),year*12)-1)
BigDecimal b = new BigDecimal(monInterest)
monInterest = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()
System.out.println("月供本息和:"+monInterest)
}
/**
*
* 转换为月利率
* @param rate
* @return
*/
public static double resMonthRate(double rate){
return rate/12
}
/**
* TODO
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int totalMoney=430000
double rate=0.0655
int year=20
// BankRefund.interest(totalMoney, rate, year)
BankRefund.principal(totalMoney, rate, year)
}
}
//java 等额本息还款编程每月应还:a*[i*(1+i)^n]/[(1+I)^n-1]//看不懂你公式里i和I的区别,就当做是利率1和利率2了
//百度到的等额本息还款公式应该是X = Aβ(1+β)^m/[(1+β)^m-1],估计你是打错了,但还是按你的编写了
package Test
import java.util.Scanner
import java.lang.Math
public class Huankuan {
public static void main(String[] args) {//
double sum=0d//还款数
double a=1d//欠款数
double i=1d//利率1
double I=0d//利率2
int n//欠 款月数
//金 额类要求精度高,都用double类型
Scanner sc=new Scanner(System.in)
System.out.println("请输入欠款数")
a=sc.nextDouble()
System.out.println("请输入月数")
n=sc.nextInt()
System.out.println("请输入利率1(百分比)")
i=sc.nextDouble()/100
System.out.println("请输入利率2(百分比)")
I=sc.nextDouble()/100
sum=a*(i*Math.pow(1+i, n))/(Math.pow(1+I, n-1))
System.out.println("等额本息还款,每月应还:"+sum+"元")
}
}
程序里的表达式和数学的表达式不太相同,里面是不能随变用中括号 “[” "]"的。把中括号换成小括号就可以了。另外,(1+py)^n改成Math.pow((1+py)。多看一些基础的编程知识吧。