Bashに2つのdoubleを追加します。

Bashに2つのdoubleを追加します。

2つのdoubleを追加しようとしています。

y1=0.17580197E-01
y2=0.11979236E-02
sum=`echo $y1+$y2 | bc -l`

上記のスクリプトは sum=-2.704405652 を提供します。この問題をどのように解決できますか?

答え1

次のコマンドを使用して、awkを使用してこれを実行できます。

sum=`echo|awk -v y1=$y1 -v y2=$y2 '{print y1+y2}'`

コメントで提案したように、awkはこのように書き直すことができます(反響を避けるため)。

sum=`awk -v y1=$y1 -v y2=$y2 'BEGIN {print y1+y2}'`

答え2

この試み、

echo "$y1 $y2" | awk  '{print $1+$2}'
0.0187781

スペースで区切られた2つの値を印刷し、awkを使用して最初の2つのフィールドを追加します。

答え3

bcに追加するには、数値に科学的指数を含めないでください。つまり、数値は float( %f) 形式でなければなりません。これは次の方法で行うことができます。

y1=0.17580197E-01
y2=0.11979236E-02
sum=$(printf '%.20f+%.20f\n' "$y1" "$y2" | bc -l)

関連情報