
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)