bc를 사용하여 음수 부동 소수점 숫자의 차이 계산

bc를 사용하여 음수 부동 소수점 숫자의 차이 계산

두 개의 음수 부동 소수점 숫자 사이의 차이를 계산한 다음 결과가 특정 임계값 미만인지 확인하고 싶습니다. 이 계산은 여러 번 수행되므로 숫자가 저장되므로 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

관련 정보