在 Bash 脚本中用数字除法

在 Bash 脚本中用数字除法

我想深入研究整数,但我的结果将是一个数字,而 bash 无法执行数字:

from=69;to=64;steps=$(( 12-1 )); ssize=$(( (to - from) / steps ))
echo $ssize $steps

结果

0 11

编辑:

bc 与乘法一起使用:

echo "5.94*11.14" | bc

给出66.17

但分裂

echo "5.94/11.14" | bc

给出0

答案1

正如已经指出的那样,bash 本身无法处理浮点计算。你正在执行向下取整除法

(69-64)//11 = 5//11 = 0

相反使用bc

steps=12;ssize=$(bc -l <<< "from=69;to=64;(to - from)/$steps;"); echo $ssize $steps

该选项-l将加载 mathlib 并设置scale=20bc处理句点后多少位数字。默认值为0,这就是为什么在调用时只看到整数除法bc而不使用-l。或者scale手动设置

steps=12;ssize=$(bc <<< "scale=20;from=69;to=64;(to - from)/$steps;"); echo $ssize $steps

相关内容