現在我身上有一筆30萬10年基準利率(6.55)的貸款,壓力不大(每月等額本息還款3414.08元),於是每月工資留出一部分買了火雞(貨幣基金:我買的那個收益年化約4.5,在這裏普及一下:火雞零門檻-1000元起可買;購買方便-各銀行有售,網上銀行即可操作;贖回快捷-一般T+1;還有,收益月結喲^^那真是活期的靈活定期的收益,實際上目前絕大部分火雞的收益要超過定期)。
但我最近在想:如果把結餘的這些錢提前還款會不會更划算?
於是把以下幾種情況算一下做個對比:1. 10年貸款應還款本息總額
2. 假如30萬直接買成火雞的10年收益(每月還是用工資去還3414.08;不提前還款而去買火雞參照此種情況)
3. 假如不貸款,把每月的應還款買火雞的10年收益(提前還款可參照此種情況,即貸款一下來就還了這種極端零利息情況)
--開始計算……
1. 隨便從網上找個貸款計算器可知10年總還款額爲:409580.43元
2. 寫程序(見後)計算知:30萬本金購雞、年化按4.5、月結,10年本金+收益=472916.22元
3. 寫程序(見後)計算知:月購3414.18、年化按4.5、月結,10年本金+收益=502682.64元
如果將火雞收益提高至6,則2、3情況分別得到545819.02、543109.26。
由此可知,按目前火雞行情來看的話(大部分火雞年化都不會超過5),還是提前還款更划算一些。否則買雞更划算。
private static final double MONTH_RATE = fixed(1 + 0.045 / 12);
/**
* 四捨五入保留小數4位
* (上網查了一下銀行的中間計算精度,有說3位的,有說5位,這裏按4位)
* 另:BigDecimal入參爲String較精準
*
* @param d
* @return
*/
private static double fixed(double d) {
return new BigDecimal(Double.toString(d)).setScale(4,
BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 假如把本該每月還的錢買成年化4的火雞
*
* @param d
* @return
*/
private static void calcNoLoan() {
int months = 120;
double principal = 3314.08;
double sum = 0;
for (int i = 0; i < months; i++) {
sum = fixed(sum * MONTH_RATE + principal);
}
System.out.println(sum);
}
/**
* 假如把30萬貸款買成年化4的火雞
*
* @param d
* @return
*/
private static void calcLoan() {
int months = 120;
double sum = 300000;
for (int i = 0; i < months; i++) {
sum = fixed(sum * MONTH_RATE);
}
System.out.println(sum);
}
public static void main(String[] args) throws Exception {
calcLoan();
calcNoLoan();
}