두 개의 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
공백으로 구분된 두 값을 인쇄하고 awk를 사용하여 처음 두 필드를 추가하면 됩니다.
답변3
bc에 추가하려면 숫자에 과학적 지수가 포함되어서는 안 됩니다. 즉, 숫자는 float( %f
) 형식이어야 합니다. 이는 다음을 통해 수행할 수 있습니다.
y1=0.17580197E-01
y2=0.11979236E-02
sum=$(printf '%.20f+%.20f\n' "$y1" "$y2" | bc -l)