web-dev-qa-db-ja.com

bash +数値からパーセンテージを計算する方法

数値からパーセンテージを計算する方法

たとえば設定しました

number=248

$ numberの80%を知りたい

それで、bashでそれを計算する方法は?

予想出力198(正確には198.4ですが、床で切り捨てたいです)

2
yael

bashは浮動小数点演算を実行できませんが、それほどの精度が必要ない場合は、次のように偽ることができます。

$ number=248
$ echo $(( number*80/100 ))
198
6
DopeGhoti

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
2
Isaac

awk式の場合:

$ number=248
$ awk -v n="$number" 'BEGIN{ print int(n*0.8) }'
198
0
RomanPerekhrest

pおよびnが正であり、p*n + 100は最大整数をオーバーフローしません。pnパーセントは

切り捨て:

$(( p*n / 100 )) 

最も近い値への丸め、半切り上げ:

$(( (p*n+50) / 100 )) 

切り上げ:

$(( (p*n+99) / 100 )) 
0
ilkkachu