使用 bc 命令重新调整缩放值

使用 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 位,因为小数点值的最后一位与答案不同,因此为了获得高精度,我必须这样做。

答案1

如果你不担心 bc 的四舍五入,你可以这样做:

$ echo "scale=10 ; "$val/1" " | bc
111.1080555135

当一个值被除(甚至除以 1)时,小数位数就会调整为scale.

当然,您始终可以使用 shell printf(同样,可能会出现一些舍入)。

$ printf '%5.10f\n' "$val"
111.1080555135

为什么需要精度?

相关内容