쉘 스크립트를 사용하여 부동 소수점 숫자(예: 소수점 이하 최대 4자리)의 대략적인 값을 계산하려면 어떻게 해야 합니까? 두 가지 예가 있습니다.
A=1.2345678
그리고 B=1.2345678E-05
.
A=1.2346
그래서 나는 and 을 얻고 싶습니다 B=1.2346E-05
.
A
다음을 사용하여 작업을 빠르게 완료할 수 있습니다 cut
.
A=`echo $A | cut -c1-6`
하지만 이렇게 하면 A=1.2345
마지막 숫자가 반올림될 것으로 예상됩니다 6
(다음 숫자가 5보다 크므로). 그리고 소수점 앞의 한 자리에서만 작동합니다. (대략적으로 계산하고 싶다면 어떻게 해야 할까요?) 마찬가지 100.2345678
입니다.B
답변1
사용 printf
:
$ printf "%.4f\n" "$A"
1.2346
$ printf "%.4f\n" "$B"
0.0000
$ printf "%.4e\n" "$B"
1.2346e-05
$ printf "%.14f\n" "$B"
0.00001234567800
$ printf "%.4g\n" "$B"
1.235e-05
$ printf "%.4g\n" "$A"
1.235
인덱스가 변경될 수 있으므로 %e
동일하게 유지하려면 쉘의문자열 연산지수에서 숫자를 분리하고 별도로 인쇄하는 기능:
$ B=100.12345678E-05
$ printf '%.5fE%s\n' "${B%E*}" "${B##*E}"
100.12346E-05
${B%E*}
첫 번째 항목 이전의 모든 항목 E
과 ${B##*E}
첫 번째 항목 이후의 모든 항목을 인쇄합니다 E
.