Bash에 두 개의 double을 추가하십시오.

Bash에 두 개의 double을 추가하십시오.

두 개의 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)

관련 정보