bc 명령을 사용하여 스케일링 값을 다시 조정하십시오.

bc 명령을 사용하여 스케일링 값을 다시 조정하십시오.

12345의 제곱근을 구한 다음 아래 표시된 명령을 사용하여 소수점 이하 100자리까지 확장하려고 합니다.

val=$(bc <<< "scale=100 ; sqrt ( 12345) " )

그러나 문제는 echo 명령에서만 bc를 사용하여 소수점 이하 10자리로 값의 크기를 조정하고 싶지만 작동하지 않는다는 것입니다. 다음 코드 줄을 시도했지만 성공하지 못했습니다.

echo "scale=10 ; "$val" " | bc

echo "scale=10 ; $val " | bc

echo "scale=10 ; val " | bc

여기 누구든지 저를 도와주고 차이점을 알아낼 수 있나요?

참고: 소수점 값의 마지막 자리가 답과 다르기 때문에 sqrt()에서 값을 10자리로 직접 스케일링하고 싶지 않으므로 높은 정확도를 얻으려면 이렇게 해야 합니다.

답변1

BC 반올림이 걱정되지 않는다면 다음과 같이 할 수 있습니다.

$ echo "scale=10 ; "$val/1" " | bc
111.1080555135

값을 나누면(1로도) 소수 자릿수가 로 조정됩니다 scale.

물론 언제든지 shell printf를 사용할 수 있습니다(역시 약간의 반올림이 발생할 수 있습니다).

$ printf '%5.10f\n' "$val"
111.1080555135

정밀도가 왜 필요한가요?

관련 정보