Bash

使用 bc 命令重新縮放縮放值

  • April 10, 2021

我試圖找到 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

為什麼需要精度?

引用自:https://unix.stackexchange.com/questions/644393