Bash
使用 bc 命令重新縮放縮放值
我試圖找到 12345 的平方根,然後使用下面顯示的命令將其縮放到小數點後 100 位:
val=$(bc <<< "scale=100 ; sqrt ( 12345) " )
但問題是我想僅在 echo 命令中使用 bc 將值重新縮放到小數點後 10 位,但它不起作用,我嘗試了以下行程式碼但沒有一個起作用。
echo "scale=10 ; "$val" " | bc echo "scale=10 ; $val " | bc echo "scale=10 ; val " | bc
有人可以在這裡幫助我並找出區別。
注意:我不想直接將值縮放到 sqrt() 中的 10 位,因為小數點的最後一位與答案不同,因此為了獲得高精度,我必須以這種方式進行。
如果您不擔心在 bc 中四捨五入,您可以這樣做:
$ echo "scale=10 ; "$val/1" " | bc 111.1080555135
當一個值被除(甚至除以 1)時,小數位數被調整為
scale
.當然,您始終可以使用 shell printf(同樣,可能會出現一些舍入)。
$ printf '%5.10f\n' "$val" 111.1080555135
為什麼需要精度?