bc を使用した負の浮動小数点数の差の計算

bc を使用した負の浮動小数点数の差の計算

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

関連情報