我想深入研究整数,但我的结果将是一个数字,而 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=20
要bc
处理句点后多少位数字。默认值为0
,这就是为什么在调用时只看到整数除法bc
而不使用-l
。或者scale
手动设置
steps=12;ssize=$(bc <<< "scale=20;from=69;to=64;(to - from)/$steps;"); echo $ssize $steps