本帖最后由 maria 于 2016-3-7 21:08 编辑
以前做项目,用java写过一个贷款计算器,今天整理资料时候看到了,突发奇想用shell写一个贷款计算器
贷款有两种还款的方式:等额本金法和等额本息法
简单说明一下等额本息法与等额本金法的主要区别:
等额本息法的特点是:每月的还款额相同,在月供中“本金与利息”的分配比例中,前半段时期所还的利息比例大、本金比例小,还款期限过半后逐步转为本金比例大、利息比例小。所支出的总利息比等额本金法多,而且贷款期限越长,利息相差越大。
等额本金法的特点是:每月的还款额不同,它是将贷款额按还款的总月数均分(等额本金),再加上上期剩余本金的月利息,形成一个月还款额,所以等额本金法第一个月的还款额最多 ,尔后逐月减少,越还越少。所支出的总利息比等额本息法少。
两种还款方式的比较不是我们今天的讨论范围,我们的任务就是做一个贷款计算器。
其中:等额本息每月还款额的计算公式是:
[贷款本金×月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]
{{{密码回复可见}}}
以前做项目,用java写过一个贷款计算器,今天整理资料时候看到了,突发奇想用shell写一个贷款计算器
贷款有两种还款的方式:等额本金法和等额本息法
简单说明一下等额本息法与等额本金法的主要区别:
等额本息法的特点是:每月的还款额相同,在月供中“本金与利息”的分配比例中,前半段时期所还的利息比例大、本金比例小,还款期限过半后逐步转为本金比例大、利息比例小。所支出的总利息比等额本金法多,而且贷款期限越长,利息相差越大。
等额本金法的特点是:每月的还款额不同,它是将贷款额按还款的总月数均分(等额本金),再加上上期剩余本金的月利息,形成一个月还款额,所以等额本金法第一个月的还款额最多 ,尔后逐月减少,越还越少。所支出的总利息比等额本息法少。
两种还款方式的比较不是我们今天的讨论范围,我们的任务就是做一个贷款计算器。
其中:等额本息每月还款额的计算公式是:
[贷款本金×月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]
{{{密码回复可见}}}
0
本帖最后由 dessler 于 2016-8-31 01:29 编辑
总算算出来了,但是和实际误差几块几十块 应该就是小数位的问题了
数字越大相差越大,数字越小就相差越小
总算算出来了,但是和实际误差几块几十块 应该就是小数位的问题了
数字越大相差越大,数字越小就相差越小
- #!/bin/bash
- read -t 10 -p "please input daikuan jine:" d
- read -t 10 -p "please input daikuan shijian:" y
- if [ -n "$d" -a -n "$y" ]
- then
- d1=`echo $d |sed 's/[0-9]//g'`
- y1=`echo $y |sed 's/[0-9]//g'`
- if [ -z "$d1" -a -z "$y1" ]
- then
- yf=$(( $y * 12 ))
- ll=0.0029
- a1=`echo "scale=2;$d*$ll" |bc`
- a2=`echo "scale=2;$ll+1" |bc`
- a3=`echo "scale=2;$a2^$yf" |bc`
- a4=`echo "scale=2;$a3*$a1" |bc`
- b2=`echo "scale=2;$a3-1" |bc`
- c=`echo "scale=2;$a4/$b2" |bc`
- echo "you de daikuan is $d,daikuan shijian is $y,mei yue huankuan is $c"
- else
- echo "you de input no cun shuzi,please chongxin shuru!"
- exit 11
- fi
- else
- echo "you de input error,please chongxin shuru!"
- exit 12
0
你的算式里的参数都没有赋值啊!
比如a1=`echo "scale=5;$x*$ll" |bc`里的$x和$ll都没值啊
dessler 发表于 2016-8-30 14:24
为什么我算出来的结果不一直
你的算式里的参数都没有赋值啊!
比如a1=`echo "scale=5;$x*$ll" |bc`里的$x和$ll都没值啊
0
实际是有值的,这个代码里面没写 只是没明白这个冥运算
我用let $a**$b 可以计算冥运算但是$a 必须是整数,我这个算出来的又是有小数的
而且580**360 数字是无穷大
很难计算了
我看你好像for循环进行的360次方计算
我就是计算太复杂 没搞懂,其他都没问题
maria 发表于 2016-8-30 14:56
你的算式里的参数都没有赋值啊!
比如a1=`echo "scale=5;$x*$ll" |bc`里的$x和$ll都没值啊
实际是有值的,这个代码里面没写 只是没明白这个冥运算
我用let $a**$b 可以计算冥运算但是$a 必须是整数,我这个算出来的又是有小数的
而且580**360 数字是无穷大
很难计算了
我看你好像for循环进行的360次方计算
我就是计算太复杂 没搞懂,其他都没问题
0
bc幂运算用^就好了
dessler 发表于 2016-8-30 15:28
实际是有值的,这个代码里面没写 只是没明白这个冥运算
我用let $a**$b 可以计算冥运算但是$a 必须是整 ...
bc幂运算用^就好了
编辑回复