我来出shell练习题五——贷款计算器

回复 收藏
本帖最后由 maria 于 2016-3-7 21:08 编辑

以前做项目,用java写过一个贷款计算器,今天整理资料时候看到了,突发奇想用shell写一个贷款计算器
贷款有两种还款的方式:等额本金法和等额本息法

简单说明一下等额本息法与等额本金法的主要区别:
等额本息法的特点是:每月的还款额相同,在月供中“本金与利息”的分配比例中,前半段时期所还的利息比例大、本金比例小,还款期限过半后逐步转为本金比例大、利息比例小。所支出的总利息比等额本金法多,而且贷款期限越长,利息相差越大。
等额本金法的特点是:每月的还款额不同,它是将贷款额按还款的总月数均分(等额本金),再加上上期剩余本金的月利息,形成一个月还款额,所以等额本金法第一个月的还款额最多 ,尔后逐月减少,越还越少。所支出的总利息比等额本息法少。


两种还款方式的比较不是我们今天的讨论范围,我们的任务就是做一个贷款计算器。

其中:等额本息每月还款额的计算公式是:
[贷款本金×月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]
{{{密码回复可见}}}

2016-03-07 16:48 举报
已邀请:
0

不怕不怕

赞同来自:

厉害
0

chiang1213

赞同来自:

学习!
0

balich

赞同来自:

学习了
0

boy461205160

赞同来自:

{:4_91:}
0

ldp840611

赞同来自:

来学习
0

zyos

赞同来自:

{:7_229:}
0

jinm

赞同来自:

学习
0

summer123

赞同来自:

学习一下
0

讯风

赞同来自:

学习
0

wsw13640218682

赞同来自:

来学习大神
0

cxiaodian

赞同来自:

good
0

opensky

赞同来自:

学习参考
0

xzzlamp

赞同来自:

11
0

licengceng

赞同来自:

学习
0

hmh

赞同来自:

0

lanceli

赞同来自:

看看
0

wy1028

赞同来自:

{:4_92:}
0

十月鱼

赞同来自:

看看
0

15812926028

赞同来自:

666
0

xigua

赞同来自:

学习一下
0

linuxcp

赞同来自:

{:4_91:}
0

dessler

赞同来自:

本帖最后由 dessler 于 2016-8-31 01:29 编辑

总算算出来了,但是和实际误差几块几十块 应该就是小数位的问题了
数字越大相差越大,数字越小就相差越小

  1. #!/bin/bash
  2. read -t 10 -p "please input  daikuan jine:" d
  3. read -t 10 -p "please input  daikuan shijian:" y
  4. if [ -n "$d" -a -n "$y" ]
  5. then
  6.         d1=`echo $d |sed 's/[0-9]//g'`
  7.         y1=`echo $y |sed 's/[0-9]//g'`
  8.         if [ -z "$d1" -a -z "$y1" ]
  9.         then
  10.                 yf=$(( $y * 12 ))
  11.                 ll=0.0029
  12.                 a1=`echo "scale=2;$d*$ll" |bc`
  13.                 a2=`echo "scale=2;$ll+1" |bc`
  14.                 a3=`echo "scale=2;$a2^$yf" |bc`
  15.                 a4=`echo "scale=2;$a3*$a1" |bc`
  16.                 b2=`echo "scale=2;$a3-1" |bc`
  17.                 c=`echo "scale=2;$a4/$b2" |bc`
  18.                 echo "you de daikuan is $d,daikuan shijian is $y,mei yue huankuan is $c"
  19.         else
  20.                 echo "you de input no cun shuzi,please chongxin shuru!"
  21.                 exit 11
  22.         fi
  23. else
  24.         echo "you de input error,please chongxin shuru!"
  25.         exit 12

0

maria

赞同来自:

dessler 发表于 2016-8-30 14:24
为什么我算出来的结果不一直

你的算式里的参数都没有赋值啊!
比如a1=`echo "scale=5;$x*$ll" |bc`里的$x和$ll都没值啊
0

dessler

赞同来自:

maria 发表于 2016-8-30 14:56
你的算式里的参数都没有赋值啊!
比如a1=`echo "scale=5;$x*$ll" |bc`里的$x和$ll都没值啊

实际是有值的,这个代码里面没写 只是没明白这个冥运算
我用let $a**$b 可以计算冥运算但是$a 必须是整数,我这个算出来的又是有小数的
而且580**360 数字是无穷大
很难计算了
我看你好像for循环进行的360次方计算
我就是计算太复杂 没搞懂,其他都没问题
0

maria

赞同来自:

dessler 发表于 2016-8-30 15:28
实际是有值的,这个代码里面没写 只是没明白这个冥运算
我用let $a**$b 可以计算冥运算但是$a 必须是整 ...

bc幂运算用^就好了
0

i.kin.kin

赞同来自:

学习!
0

vanjle

赞同来自:

6666666
0

kw是id

赞同来自:

666

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: