在bash腳本,我有1名這樣的腳本:如何在bash腳本解決59分之1= 0.016949153沒有五十九分之一= 0
n1 = 1
n0 = 59
# compute p1
p1=$((n1/n0))
echo "p1 = $p1"
我想我的輸出爲P1 =59分之1 = 0.016949153 但現實中,輸出是p1 = 0
所以,如何解決它。請幫助我
在bash腳本,我有1名這樣的腳本:如何在bash腳本解決59分之1= 0.016949153沒有五十九分之一= 0
n1 = 1
n0 = 59
# compute p1
p1=$((n1/n0))
echo "p1 = $p1"
我想我的輸出爲P1 =59分之1 = 0.016949153 但現實中,輸出是p1 = 0
所以,如何解決它。請幫助我
BASH不做任何浮點數學運算。你可以使用bc
或awk
。
對於前::
p1=$(bc -l <<< "scale=5; $n1/$n0")
echo "$p1"
.01694
UPDATE:用awk:
awk -v n1=$n1 -v n0=$n0 'BEGIN{printf("%.5f\n", (n1/n0))}'
0.01695
如果我想讓我的輸出從.01694915254237288135更改爲.01695。我該怎麼辦?謝謝 – TrungTrung
@TrungTrung:查看使用'scale = 5'的更新信息。 – anubhava
非常感謝。我剛剛解決了這個問題:) – TrungTrung
您可以使用bc
獲得任意精度數學:
pax> n1=355 ; n0=113
pax> p1=$(echo "scale=50;$n1/$n0" | BC_LINE_LENGTH=9999 bc) ; echo $p1
3.14159292035398230088495575221238938053097345132743
線長度停止bc
從做它令人討厭的換行符爲更長的結果。
如果你有更多的逆波蘭的心態和我一樣,你也可以使用dc
:
pax> n1=355 ; n0=113
pax> echo 50 k $n1 $n0/p | dc
3.14159292035398230088495575221238938053097345132743
在這兩種情況下,你可以設置要使用的規模(在bc
設置scale
或使用k
命令在dc
)。
非常感謝。 – TrungTrung
我想補充
p1=$(python -c "print $n1*1.0/$n0")
[標籤:慶典]不能處理花車。你可以用它乘以1000如果你想精確到3位小數,然後打印相應。不過最好使用[tag:awk]。 – pfnuesel