2つの負の浮動小数点数の差を計算し、結果が特定のしきい値未満であることを確認したいと思います。この計算は数回行われるため、数値が保存されるため、file.dat
計算は手動で書式設定せずにファイルから直接値を取得する必要があります。このようになりfile.dat
ました。
-.63354975E+03 -.63354982E+03
bc
これで、bashは浮動小数点数を処理できないため、次のことを試しました。
paste -sd- file.dat | bc >> file.dat
このpaste
コマンドは入力を次に変換します。
-.63354975E+03--.63354982E+03
bc
減算する必要がありますが、エラーメッセージが表示されます(standard_in) 1: syntax error
。を使用してsed
数字を正数に変更してから追加することはできますが、を使用して直接実行する方法はありますかbc
?
それを使用すると他の問題が発生しますpaste -sd+ file.dat | bc >> file.dat
。これは数字を合計する必要がありますが、結果は期待したものとは4.932900412
距離が離れています1267.09957
。書式設定された数値を使用して計算を入力すると、-633.54975+-633.54982
期待した結果が得られます。したがって、bc
指数のある数値を正しく処理できないようです。この問題を解決する方法はありますか?
答え1
awk
解決策:
awk 'NR==1{a=$0};NR==2{b=$0};END{print (a)-(b)}' file.dat