如何在 bash 中四舍五入到小数点后一位?

How to round to 1 decimal in bash?

我正在 bash 上尝试我的第一个脚本,但我无法舍入(不是截断)。

所以,我得到 55.08,我想将它转换为 55.1

promedio=$(echo "scale=2; $lineas/($dias*24)" | bc)

请注意,我目前使用的是 scale=2,因为 scale=1 会产生 55.0。

谢谢大家:)

这与其说是一个 bash 问题,不如说是一个 bc 问题,但是 bc 没有四舍五入。最简单的方法可能就是在除法之后加上 .05,然后将比例设置为 1,然后除以 1 以强制截断。

您可以通过在 bc 中使用一个变量来保存未舍入的结果:

promedio=$(bc <<<"scale=2; p=$lineas/($dias*24); scale=1; (p+0.05)/1")

或者您可以通过额外乘以 10,四舍五入,然后再除以一次来完成所有操作:

promedio=$(bc <<<"scale=1; (10*$lineas/($dias*24)+0.5)/10")