2017-04-24 30 views
0

我正在尝试编写一个脚本,它需要一个给定的数量(a)并且每年使用10%的设置利率来确定需要多长时间才能累计1,000,000。问题是,我能找到的所有例子只显示简单的例子,如下所示。在bash脚本编程中的复合兴趣

echo " Enter the principle value: " 
read p 
echo " Enter the rate of interest:" 
read r 
echo " Enter the time period:" 
read t 
s=`expr $p \* $t \* $r/100` 
echo " The simple interest is " 
echo $s 

问题是我需要它的复利。我想这个答案可能会在一个时间循环中加上一个计数器,这个计数器加上了循环运行的时间,以及固定数量的金钱和利息,直到达到百万,然后回应循环的次数。我的问题(数学挑战)是我不知道这个公式是什么样的,我在bash上找不到任何它的例子。

+1

你只需乘以1.1每次... – 123

+3

你将无法与'expr',因为它只做**整数算术**。你需要'bc'或'dc',这是计算器。阅读他们的手册页。 – Jens

+0

我刚发现我应该使用这个总数= $(bc <<<“scale = 2; $ total + $ total * .9”)还不确定如何实现它。这是bc页面,但仍然没有点击。 http://www.basicallytech.com/blog/archive/23/command-line-calculations-using-bc/ – Grunt

回答

-2

您对脚本有正确的想法 - 一个循环,您将每次迭代相乘,直到达到目标。就数学而言,这取决于问题的细节。如果你在一年中的每一年(当时的利息是不是复利)年底10%的利息,每年的计算公式为:

interest = 10% * total; 
total = total + interest; 

,或者更简洁,total = 100% * total + 10% * total,从而简化对110% * total。当然,100%是1,110%是1.1,因此您得到:

total = 1.1 * total 

如果您的兴趣每月复杂化,情况就会变得更加复杂。在这种情况下,你每个月110%^(1/12)兴趣......所以那么你的循环会去遍历月,你将获得:

total = (1.1^(1/12)) * total 

和迭代的数量将是几个月,而不是几年的数量。

+0

问题是bash只能处理'整数'数学。您可以使用'bc'或其他实用程序来处理浮点,但bash没有本地功能。 –

+0

好吧,把所有东西都乘以10000,然后用整数进行数学运算,然后除以10000 .... – blackghost

1

awk来救援!

$ awk -v P=100000 -v i=10 'BEGIN{print log(1000000/P)/log(1+i/100)}' 

24.1589 

从10万利率开始,以10%的利率,达到1M将需要超过24年的时间。

+0

好吧,你得到这个,(因为'awk'解决方案更多比多次调用'bc'更有效率。 –

+0

@ DavidC.Rankin'bc'也不是bash。 – 123

+0

哦,不,我并不是说它是......但唯一能让bash变成皮肤的方法是用'bc'或'dc'或者把所有东西都乘以一定的数量以允许整数运算来保存重要然后将最终计算结果传递给'bc'或手动移动小数点。 –