计算 bash 中有许多小数的 2 个数字之间的增加/减少百分比



我需要计算 bash 脚本中 2 个数字之间的增加/减少百分比,我需要在 2 位小数之后。数字将有许多小数(例如。 684.0800000, 683.7550000). 我已经看到bc可以做到这一点,但我无法让它工作。

$ echo 684.0800000 683.7550000 | awk '{printf "%.2f%n", 100*($2/$1-1)}'
-0.05%

也就是说0.05%从第一位减少到第二位,-0.0475四舍五入到小数点后两位。

使用 bcscale变量确定精度

x=684.0800000
y=683.7550000
echo "scale=2; 100 * ($y - $x) / $x" | bc
-.04

使用bc和格式化输出与printf

$ a=684.0800000
$ b=683.7550000
$ printf '%.2fn' $(echo "100*$b/$a-100" | bc -l)
-0.05

具有更多可消化的值:

$ a=5
$ b=2
$ printf '%.2fn' $(echo "100*$b/$a-100" | bc -l)
-60.00

最新更新