数値からパーセンテージを計算する方法
たとえば設定しました
number=248
$ numberの80%を知りたい
それで、bashでそれを計算する方法は?
予想出力198(正確には198.4ですが、床で切り捨てたいです)
bash
は浮動小数点演算を実行できませんが、それほどの精度が必要ない場合は、次のように偽ることができます。
$ number=248
$ echo $(( number*80/100 ))
198
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
または、小数点以下がゼロの場合:
$ awk -vn=248 'BEGIN{printf("%.0f\n",n*0.8)}'
198
awk
式の場合:
$ number=248
$ awk -v n="$number" 'BEGIN{ print int(n*0.8) }'
198
p
およびn
が正であり、p*n + 100
は最大整数をオーバーフローしません。p
のn
パーセントは
切り捨て:
$(( p*n / 100 ))
最も近い値への丸め、半切り上げ:
$(( (p*n+50) / 100 ))
切り上げ:
$(( (p*n+99) / 100 ))