数値でパーセントを計算する方法
例えば、私たちは
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 ))