계산된 값을 잘라내려고 시도했지만 bc
설정하면 scale=0
전체 계산이 0을 반환합니다. 이 설정은 scale=1
올바른 값인 357.3을 반환하지만 scale=0
항상 0을 반환합니다.
다음은 계산 예시입니다.
echo "scale=0; 3573 * (10 / 100)/1" | bc -l
0
echo "scale=1; 3573 * (10 / 100)/1" | bc -l
357.3
부동 소수점 숫자를 정수로 자르는 올바른 방법이 아닌가요 bc
? bash 스크립팅에 정수로 사용하고 싶습니다. 감사해요!
답변1
작업 순서를 사용하는 추가 출력:
echo "scale=0; 3573 * 10 / 100" | bc -l # 357
echo "scale=0; 3573 / 100 * 10" | bc -l # 350
답변2
사용하기 awk
더 편한 것 같아요 ,
awk 'BEGIN { print int(3573 * (10/100)/1) }'
357
답변3
@Paul_Pedant의 생각이 맞습니다.: scale
계산의 모든 부분에 적용됩니다. 10 / 100 = 0(크기는 0):
$ bc <<< 'scale = 0; 10 / 100'
0
따라서 전체 계산 결과는 0입니다.
답변4
사용 printf
:
$ LC_ALL=C printf "%.0f\n" $(echo "3573 * (10 / 100)/1" | bc -l)
357