如何在 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")
我正在 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")