숫자로 백분율을 계산하는 방법
예를 들어, 우리는
number=248
우리는 $number의 80%가 무엇인지 알고 싶습니다.
그렇다면 Bash에서는 어떻게 계산합니까?
예상 출력 198(정확히는 198.4이지만 반내림하고 싶습니다)
답변1
bash
부동 소수점 계산을 할 수는 없지만 정밀도가 많이 필요하지 않으면 다음과 같이 가짜로 만들 수 있습니다.
$ number=248
$ echo $(( number*80/100 ))
198
답변2
Bash 자체는 부동 소수점 연산을 처리할 수 없습니다. 가장 좋은 방법은 bc
다음과 같이 사용하는 것입니다.
$ bc <<<"248*80/100"
198
쉘(bash, sh)은 정수만 계산할 수 있습니다.
$ bash -c 'echo $((248*80/100))'
198
ksh93은 부동 소수점 연산을 처리할 수 있습니다.
$ ksh -c 'echo $((248*0.8))'
198.4
소수점 이하 0의 형식:
$ ksh -c 'printf "%.0f\n" "$((248*0.8))"'
zsh는 다르게 수행합니다.
$ zsh -c 'echo $((248*0.8))'
198.40000000000001
그러나 포맷하면 올바른 값이 됩니다.
$ zsh -c 'printf "%.0f\n" "$((248*0.8))"'
198
또는 awk로 다음을 수행할 수 있습니다.
$ awk -vn=248 'BEGIN{print(n*0.8)}'
198.4
또는 소수점이 0인 경우:
$ awk -vn=248 'BEGIN{printf("%.0f\n",n*0.8)}'
198
답변3
그리고awk
표현하다:
$ number=248
$ awk -v n="$number" 'BEGIN{ print int(n*0.8) }'
198
답변4
합계가 양수이고 가장 큰 정수를 넘지 않는다고 가정하면 p
백분율 은 다음과 같습니다 .n
p*n + 100
p
n
반올림:
$(( p*n / 100 ))
가장 가까운 값 또는 절반으로 반올림합니다.
$(( (p*n+50) / 100 ))
모으다:
$(( (p*n+99) / 100 ))