公积金自由还款计算程序 ( by quqi99 )
2010-07-29 14:14
190 查看
公积金自由还款计算器(by quqi99)
作者:张华 发表于:2010-07-29
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
package com.TripResearch;
import java.math.BigDecimal;
/**
* 公积金自由还款计算器
*
* 还款的原则都是先还利息,后还本金。可以告诉您计算利息的方法。利息是按照您实际占压借款资金的时间来计算的。
* 每一期计息都是以您的剩余本金数作为计息的基数,用这个基数乘以月利率(月利率就是贷款年利率÷12(月)),
* 得出来的数额就是您当期应当偿还的利息数。由于您每一期的剩余本金数不一样,每一期支付的利息就不同。举个例子:
* 20万20年,最低还款额为995元,假定月利率为3.825‰。首期还款如果是按最低还款额还款,
* 其中利息部分金额为20万元×月利率(3.825‰))=765元,偿还本金部分为230元;第二期如果还是按照最低还款额还,
* 则利息部分为(20万元-230元)×月利率(3.825‰))=764.12元,偿还本金为230.88元;以后各期以此类推,
* 您可以通过网站右侧公积金贷款计算器自行推算。
* @author: huazhang
* @since: 2010-7-19
*/
public class Test
{
private static final int DEF_DIV_SCALE = 10;
public static double add(double v1, double v2)
{
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
public static double sub(double v1, double v2)
{
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
public static double mul(double v1, double v2)
{
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
public static double div(double v1, double v2)
{
return div(v1, v2, DEF_DIV_SCALE);
}
public static double div(double v1, double v2, int scale)
{
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static double round(double v, int scale)
{
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* @param args
*/
public static void main(String[] args)
{
double monthlyPayment = 4000; //月还款额
double totalLoan = 800000; //货款总额,80万
double monthlyRate = 0.00323; //月利率,年利率3.87%除以12=0.00323
int issueNum = 1; //期数
double payedCapitalTotals = 0; //已偿还本金总数
double payedInterests = 0; //已偿还利息总数
System.out.println("期数 本期偿还本金 累计偿还本金 本期偿还利息 累计偿还利息");
while(payedCapitalTotals <= totalLoan){
double remianCapitals = sub(totalLoan, payedCapitalTotals); //剩余本金数
double interest = mul(remianCapitals, monthlyRate); //本期偿还的利息
double payedCapital = sub(monthlyPayment,interest); //本期偿还的本金
payedInterests += interest;
payedCapitalTotals += payedCapital;
System.out.println(issueNum + " " + round(payedCapital,2) + " " + round(payedCapitalTotals,2) + " " + round(interest,2) + " " + round(payedInterests,2));
issueNum ++ ;
}
System.out.println("共" + round(div(issueNum,12),2) + "年还完,共偿还" + round(add(totalLoan,payedInterests),2) + "元");
}
}
作者:张华 发表于:2010-07-29
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
package com.TripResearch;
import java.math.BigDecimal;
/**
* 公积金自由还款计算器
*
* 还款的原则都是先还利息,后还本金。可以告诉您计算利息的方法。利息是按照您实际占压借款资金的时间来计算的。
* 每一期计息都是以您的剩余本金数作为计息的基数,用这个基数乘以月利率(月利率就是贷款年利率÷12(月)),
* 得出来的数额就是您当期应当偿还的利息数。由于您每一期的剩余本金数不一样,每一期支付的利息就不同。举个例子:
* 20万20年,最低还款额为995元,假定月利率为3.825‰。首期还款如果是按最低还款额还款,
* 其中利息部分金额为20万元×月利率(3.825‰))=765元,偿还本金部分为230元;第二期如果还是按照最低还款额还,
* 则利息部分为(20万元-230元)×月利率(3.825‰))=764.12元,偿还本金为230.88元;以后各期以此类推,
* 您可以通过网站右侧公积金贷款计算器自行推算。
* @author: huazhang
* @since: 2010-7-19
*/
public class Test
{
private static final int DEF_DIV_SCALE = 10;
public static double add(double v1, double v2)
{
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
public static double sub(double v1, double v2)
{
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
public static double mul(double v1, double v2)
{
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
public static double div(double v1, double v2)
{
return div(v1, v2, DEF_DIV_SCALE);
}
public static double div(double v1, double v2, int scale)
{
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static double round(double v, int scale)
{
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* @param args
*/
public static void main(String[] args)
{
double monthlyPayment = 4000; //月还款额
double totalLoan = 800000; //货款总额,80万
double monthlyRate = 0.00323; //月利率,年利率3.87%除以12=0.00323
int issueNum = 1; //期数
double payedCapitalTotals = 0; //已偿还本金总数
double payedInterests = 0; //已偿还利息总数
System.out.println("期数 本期偿还本金 累计偿还本金 本期偿还利息 累计偿还利息");
while(payedCapitalTotals <= totalLoan){
double remianCapitals = sub(totalLoan, payedCapitalTotals); //剩余本金数
double interest = mul(remianCapitals, monthlyRate); //本期偿还的利息
double payedCapital = sub(monthlyPayment,interest); //本期偿还的本金
payedInterests += interest;
payedCapitalTotals += payedCapital;
System.out.println(issueNum + " " + round(payedCapital,2) + " " + round(payedCapitalTotals,2) + " " + round(interest,2) + " " + round(payedInterests,2));
issueNum ++ ;
}
System.out.println("共" + round(div(issueNum,12),2) + "年还完,共偿还" + round(add(totalLoan,payedInterests),2) + "元");
}
}
相关文章推荐
- 计算房贷 公积金贷款 自由还款 程序
- 用Dojo实现的公积金贷款计算程序
- 分析-外星人计算Pi的程序
- VC++ 编写程序计算月亮方位,高度,赤经,赤纬等信息
- 计算圆周率的最短C程序
- C语言常用程序(1):计算某日是该年的第几天
- C# 计算一段程序运行时间
- 编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果
- 解读传说中计算π的超牛的C程序 .
- 使用QueryPerformanceFrequency 计算程序执行时间
- 求助,用VB编写个计算程序 高手解答
- Unix/Linux计算程序消耗的时间(毫秒)
- 计算1x3x5x...x(2n-1) (一个冬天没写程序,来个小的练练手。。嘿嘿。。)
- lr计算程序执行消耗时间的比较:
- 适用于ATI卡的GPU计算MD5的小程序源码,基于AMD APP SDK开发
- 计算复习日期的一个很有用的程序
- 程序运行时间计算
- 用C++程序实现复杂表达式的计算问题
- C# 程序找出文件重复的行,计算函数执行的时间
- Linux下计算程序运行效率