0

我正在使用bash. 我正在通过总结第一列来检查数据是否完整。它应该由 0 - 500 组成,增量为 0.1。不幸的是,实际数字略有偏差,因此总和可以等于 1250653.9 而不是 1250250.0 。如果我在求和之前对每个数字进行四舍五入,就可以避免这种情况。目前,我使用以下内容:

cat L_z_expectation.dat | awk '{ print $1 }' | paste -sd+ | bc

有没有办法将“+0.0001”粘贴到每一行,然后在一行中单独将每一行传递到 bc?

4

2 回答 2

2

awk 的大多数实现似乎都使用双精度浮点数,因此它足以满足您的需求。

所以你只能awk用于你想要的:

awk 'BEGIN {s=0;} {s+=$1} END {print s}' L_z_expectation.dat

您可能需要改为使用printfprint足够精确地显示数字。

如果您仍想对第一列进行舍入,则可以执行以下操作:

awk 'BEGIN {s=0;} {s+=int($1+0.5)} END {print s}' L_z_expectation.dat
于 2013-08-08T09:03:23.963 回答
0

我认为只需附加它 awk 就可以了。

cat L_z_expectation.dat | awk '{ print $1 "+0.0001"}' | paste -sd+ | bc

还是您需要省略粘贴?

cat L_z_expectation.dat | awk '{ print $1 "+0.0001"}' | bc
于 2013-08-08T08:57:17.047 回答