NO.87 提前還款or買火雞?(捎帶舉例JAVA Double精度計算問題)

(如有謬誤,敬請指正……)


     現在我身上有一筆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.02543109.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();
	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章