Board logo

标题: [数值计算] 批处理怎样编写房贷计算器? [打印本页]

作者: cjiabing    时间: 2011-2-13 23:16     标题: 批处理怎样编写房贷计算器?

想写个房贷计算器,遇到小数点、幂、超过五位数的计算,绕来绕去没写好,请大家帮忙。
用批处理实现以下计算功能——月供(每月还款额)的计算:

下面举例:50多万的房子,需要贷款40万,20年,2011年2月9号的商业贷款年利率为6.6%。

本金:就是需要贷款的数额——400000元;

还款月数=20年*12月=240个月;

月利率=年利率/12=6.6%/12=0.0055元;

以下的年利率是4.16%,好像是09年的算法:

                                         
希望做个批处理实现以上算法,比较复杂,但应该可以实现。
(6.6%+1)的240次幂结果是3.73。
以下这个是我写的,前面的都对,但在计算月供和总利息的时候出错了,原因是算法有误。

@echo off
echo;
set /p v_sfbl=首付款比率(按揭成数,如 30% 填30):
set /p v_sdll=商业贷款利率(如 6.6%,6.6*100=640,填660):
set /p v_fwdj=房屋单价(元/平米):
set /p v_fwmj=房屋面积(平米):
set /p v_ajyg=按揭月供年数(如30年):
echo;
echo;============================================
echo;
set /a s_fwzj=%v_fwdj%*%v_fwmj%
echo;房屋总价:%s_fwzj% 元。
set /a s_sfk=%s_fwzj%*30/100
echo;首付款:%s_sfk% 元。
set /a s_dkje=%s_fwzj%-%s_sfk%
echo;贷款总额(贷款本金):%s_dkje% 元。
set /a s_hkny=%v_ajyg%*12
echo;还款年数 %v_ajyg% 年,共 %s_hkny% 个月份(期)。
set /a s_nlx=%s_dkje%*%v_sdll%/10000
echo;年利息 %s_nlx% 元。
set /a s_znlx=%s_nlx%*%v_ajyg%
echo;%v_ajyg% 年总利息 %s_znlx% 元。
set /a s_zhk=%s_znlx%+%s_dkje%
echo;%v_ajyg% 年总还款 %s_zhk% 元。
set /a s_yg=%s_zhk%/%s_hkny%
echo;月供 %s_yg% 元。
echo;
pause
exit

作者: CrLf    时间: 2011-2-14 00:01

貌似是小数点的问题?年利息那块已经改好,年总利息那块同理,还是留给楼主好了(我真懒)...
  1. @echo off&setlocal enabledelayedexpansion
  2. echo;
  3. goto s
  4. set /p v_sfbl=首付款比率(按揭成数,如 30% 填30):
  5. set /p v_sdll=商业贷款利率(如 6.6%,6.6*100=640,填660):
  6. set /p v_fwdj=房屋单价(元/平米):
  7. set /p v_fwmj=房屋面积(平米):
  8. set /p v_ajyg=按揭月供年数(如30年):
  9. :s
  10. set v_sfbl=400000
  11. set v_sdll=0.00347
  12. set v_fwdj=5000
  13. set v_fwmj=100
  14. set v_ajyg=20
  15. echo;
  16. echo;============================================
  17. echo;
  18. set /a s_fwzj=%v_fwdj%*%v_fwmj%
  19. echo;房屋总价:%s_fwzj% 元。
  20. set /a s_sfk=%s_fwzj%*30/100
  21. echo;首付款:%s_sfk% 元。
  22. set /a s_dkje=%s_fwzj%-%s_sfk%
  23. echo;贷款总额(贷款本金):%s_dkje% 元。
  24. set /a s_hkny=%v_ajyg%*12
  25. echo;还款年数 %v_ajyg% 年,共 %s_hkny% 个月份(期)。
  26. set tmp=%v_sdll%
  27. for /l %%a in (1 1 9) do set tmp=!tmp:%%a=0!
  28. for /f "tokens=* delims=.0" %%a in ("%v_sdll%") do set tmp2=%%a
  29. set /a s_nlx=s_dkje*tmp2/%tmp:0.=1%,tmp_nlx=s_nlx
  30. for %%a in (1 1 4) do if "!s_nlx:~%%a!"=="" set /a n=5-%%a
  31. for /l %%a in (1 1 %n%) do set s_nlx=0!s_nlx!
  32. echo;年利息 %s_nlx:~0,-4%.%s_nlx:~-4% 元。
  33. set /a s_znlx=%s_nlx%*%v_ajyg%
  34. echo;%v_ajyg% 年总利息 %s_znlx% 元。
  35. set /a s_zhk=%s_znlx%+%s_dkje%
  36. echo;%v_ajyg% 年总还款 %s_zhk% 元。
  37. set /a s_yg=%s_zhk%/%s_hkny%
  38. echo;月供 %s_yg% 元。
  39. echo;
  40. pause
  41. exit
复制代码

作者: cjiabing    时间: 2011-2-14 00:34

呵呵,我也是懒人,所以搞这些东东!~
试试看先
作者: CrLf    时间: 2011-2-14 01:10

个人认为这种计算的活还是vbs来做比较好
作者: cjiabing    时间: 2011-2-14 13:46

原帖由 zm900612 于 2011-2-14 00:01 发表
貌似是小数点的问题?年利息那块已经改好,年总利息那块同理,还是留给楼主好了(我真懒)...
@echo off&setlocal enabledelayedexpansion
echo;
goto s
set /p v_sfbl=首付款比率(按揭成数,如 30% 填30):
...

老大,结果似乎不对,不过你的方法有意思,研究下
作者: CrLf    时间: 2011-2-14 13:58

年利息那段我没改,算出来当然不对...
作者: cjiabing    时间: 2011-2-14 14:26     标题: 回复 6楼 的帖子

我们前面写的是根据我同事的算法来写的,但结果和网上许多算法结果都不同。估计我们算的那个是错误的。
一楼给出的计算公式是网上公布的一条公式,不好算,好像不用算年利息那些,不过我根据网上的房贷计算器计算结果总结了下,得出以下关系:
月均还款*贷款月数=还贷总额
还贷总额-贷款总额=支付利息款
支付利息款/贷款月数=月利息款
我最怕数学了,简单的数学题都弄得我头昏!~如果有VB的,直接给个VB算了,今天是想用,不想去鼓捣了。谢谢。
作者: broly    时间: 2011-2-14 20:34

算法是根据1L的批处理。
用VB写的:




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2