我有一个浮点数的bash数组,比如它被称为vals
并且像这样初始化 -
# load data from the datafile.txt
vals=`cat datafile.txt`
vals=($vals)
datafile.txt
看起来像这样 -
0.012256791324227446
0.012424287090558156
0.013912725724889032
0.014678182257134693
现在我需要使用bc计算vals
中元素1和2的平均值,我的做法如下 -
result=$(echo "(${vals[1]} + ${vals[2]})/2.0" | bc)
echo result: $result
但result
始终为0
,请注意元素不是0.0
。
任何想法?
编辑:数据已更改。
答案 0 :(得分:1)
使用scale
定义小数点后的位数:
$ echo "scale=5; (${vals[1]} + ${vals[2]})/2.0" | bc
.49580
$ echo "scale=3; (${vals[1]} + ${vals[2]})/2.0" | bc
.495
来自man bc
:
比例(表达式)
scale函数的值是之后的位数 表达式中的小数点。
另外,请注意这一点:
vals=$(cat datafile.txt)
答案 1 :(得分:1)
如果我需要浮点数,我通常会调用bc -l
。