去年去看了几次房,加了N个房产中介。每天朋友圈都有中介发卖房广告,内容一般是多少平米挂出单价是多少,然后首付能做到多少。没了解过的人可能奇怪,按三成一算怎么首付可以这么少。这里少于三成首付,靠的是提高评估价,银行多贷来的部分填补到三成首付(ps:即是高评高贷,低首付吸引促成交易,不能尽信中介,实际可能评不到那么高。楼主去年就被忽悠了,8.5K的单价,说是可以评估到11K,相当首付不到20W,结果评下来9K每平,首付比中介说的多出大几万,老婆本都折进去了)。
评估价银行要参考当前市场成交的价格的,而中介是向来说近年的一个最高评估价,一般评估出来会低。写这个程序用来还原评估价并计算出月供(等额本息),各位看官多了解了解市场行情,从中判断中介所说水份有多大。下面上代码:
import java.math.BigDecimal;
/**
* 评估价,月供计算器
* 中介一般说多少平米挂出单价是多少,然后首付能做到多少,实际少于三成首付,靠的是提高评估价(ps:即是高评高贷,促成交易手段,实际一般评不到那么高,忽悠).
* 这个程序用来还原评估价并计算出月供(等额本息)
* 计算以三成首付,基准利率4.9,月供等额本息为例
* 评估价计算公式:(S*P*0.7+S*P*0.3-F)/0.7/S=(S*P-F)/0.7/S
* S 面积 space,P 每平米单价 price,F 首付总额firstpay
* <p></p>
* 等额本息:〔贷款本金×月利率×(1+月利率)^还款月数〕÷〔(1+月利率)^还款月数-1〕
* 等额本金:每月还款金额 = (贷款本金 ÷ 还款月数)+(本金 — 已归还本金累计额)×每月利率
* ^符号表示乘方
* 举例说明假设以10000元为本金、在银行贷款10年、基准利率是6.65%,比较下两种贷款方式的差异:
* 等额本息还款法: 月利率=年利率÷12=0.0665÷12=0.005541667
* 月还款本息=〔10000×0.005541667×(1+0.005541667)^120〕÷〔(1+0.005541667)^120-1〕=114.3127元
* 合计还款 13717.52元 合计利息 3717.52万元.
* 等额本金还款法 : 每月还款金额 = (贷款本金÷还款月数)+(本金 — 已归还本金累计额)×每月利率
* =(10000 ÷120)+(10000— 已归还本金累计额)×0.005541667
* 首月还款 138.75元 每月递减0.462元
* 合计还款 13352.71元 利息 3352.71元
*
* @author nengguo.he
* @version 1.0
* @time 2019/5/24 9:46 AM
* @since 1.0
*/
public class Test {
public static void main(String[] args){
double baseUp = 10d;//上浮百分比
double s = 117d;//面积
double p = 12000d;//单价
double f = 230000d;//首付
double vp = round((s * p - f)/0.7/s, 2);//评估价
double vpt = round(s * vp, 2);//评估总价
double loan = round(s * vp * 0.7, 2);//贷款总额
System.out.printf("面积:%s, 单价:%s, 首付:%s, 总价:%s\n\n", s, p, f, (s*p));
System.out.printf("评估单价:%s, 评估总价:%s, 贷款总额:%s\n\n", vp, vpt, loan);
calMonthPay(loan, baseUp);
}
private static void calMonthPay(double loan, double baseUp) {
double base = 0.049;//基准利率
double yearBase = (double) Math.round((base*(1 + baseUp /100)) * 10000)/ 10000;
double monthBase = round(yearBase / 12, 8);
System.out.printf("年利率:%s, 月利率:%s\n\n", yearBase, monthBase);
//等额本息
double y30 = Math.pow((1+monthBase), 12*30);
double m30y = round((loan * monthBase * y30)/(y30 - 1), 2);
double y25 = Math.pow((1+monthBase), 12*25);
double m25y = round((loan * monthBase * y25)/(y25 - 1), 2);
double y20 = Math.pow((1+monthBase), 12*20);
double m20y = round((loan * monthBase * y20)/(y20 - 1), 2);
System.out.printf("30年月供:%s, 25年月供:%s, 20年月供:%s\n\n", m30y, m25y, m20y);
}
private static double round(double val, int scale) {
return new BigDecimal(val).setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
运行结果: