web-dev-qa-db-ja.com

Bashで除算を行うことから10進数の出力を取得することは可能ですか?

基本的にBashでは、ユーザーから数秒の入力を受け取り、時間を見つけることを試みています。したがって、基本的にユーザーが35を入力すると、出力は0.00972222になります。

しかし、bashは私にゼロを与えます。

ここに私が持っているコマンドがあります:

echo "Enter the seconds you wish to convert to hours: " && read sec && echo " $((sec/3600)) is the amount of hours "

35と入力すると0.00972222と出力されるようにする方法はありますか?.

ありがとう!

2
shawn edward

ここでこれを試してください

echo $(echo "35/3600" | bc -l )

コマンドは次のようになります

echo "Enter the seconds you wish to convert to hours: " && read sec && echo " $(echo "$sec/3600" | bc -l ) is the amount of hours "

印刷される有効桁数を制御するには、scale=Nを使用します。例えば:

$ echo "scale=3; 35/3600" | bc -l 
.009

先頭の0も印刷したい場合(奇妙なことに bcは簡単には実行できません )、番号をprintf(これも切り上げ/切り捨てできます):

$ printf '%.3f\n' $(echo "35/3600" | bc -l)
0.010
$ printf '%.4f\n' $(echo "35/3600" | bc -l)
0.0097
9
Sunny