0

を使用して一部のデータを処理していますbash。最初の列を合計して、データが完全かどうかを確認しています。0 から 500 まで、0.1 刻みで指定します。残念ながら、実際の数値はわずかにずれているため、合計は 1250250.0 ではなく 1250653.9 になります。これは、合計する前に各数値を丸めれば回避できます。現在、私は以下を使用しています:

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

「+0.0001」を各行に貼り付けてから、各行を bc に 1 行で個別にパイプする方法はありますか?

4

2 に答える 2

2

awk のほとんどの実装では、倍精度の浮動小数点数が使用されているように見えるため、目的には十分です。

したがって、必要なものにのみ使用できますawk

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

十分な精度で数値を表示するには、printf代わりにを使用する必要がある場合があります。print

それでも最初の列を丸めたい場合は、次の操作を実行できます。

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 に答える