2017-04-24 17 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

私はこのtotal = $(bc <<< "scale = 2; $ total + $ total * .9")を使用することになっていることを知りました。ここではbcページですがまだクリックしていません。 http://www.basicallytech.com/blog/archive/23/command-line-calculations-using-bc/ – Grunt

答えて

-2

あなたはスクリプトのための正しいアイデアを持っています。目標に達するまでループごとに反復するループです。数学的には、問題の詳細に依存します。あなたは今年の終わり(当時関心が配合されていない)は毎年10%の権益を取得し、各年の式がある場合:110% * totalに簡素化

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

または、より簡潔に、total = 100% * total + 10% * total、。もちろん、100%は1、110%は1.1です。

total = 1.1 * total 

あなたの興味が月ごとに複雑になると、状況はより複雑になります。この場合、あなたはそう、あなたのループは、毎月繰り返す行くだろう、とあなたはなるだろう...毎月110%^(1/12)関心を得る:

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

そして、反復回数は数ヶ月ではなく、年の数を表します。

+0

問題は、bashは '整数 'の計算しか処理できないということです。浮動小数点を扱うのに 'bc'や他のユーティリティを使うことができますが、bashにはネイティブ機能はありません。 –

+0

Okだから、10000をすべて乗算し、整数で数式を計算し、10000で除算します.... – blackghost

1

awkレスキュー!

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

24.1589 

元本100,000から10%の金利で開始すると、1Mに達するのに24時間以上の時間がかかりません。

+0

「awk」ソリューションがはるかに多いので、これは(bashというタグが付いていても) 'bc'への複数の呼び出しより効率的です。 –

+0

@ DavidC.Rankin 'bc'はbashでもありません。 – 123

+0

ああ、私はそれが...と示唆していませんでしたが、catに 'bc'や' dc'をつけているbashをスキンにつける唯一の方法や、整数計算で重要なものを保存できるようにすべてを掛けます最後の計算を 'bc'に渡すか、小数点を手動で移動します。 –

関連する問題