bash +如何根据数字计算百分比

bash +如何根据数字计算百分比

如何根据数字计算百分比

例如我们设置

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

shell(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

答案3

awk表达:

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

答案4

假设pn为正数,且不p*n + 100溢出最大整数,则p百分比n

向下舍入:

$(( p*n / 100 )) 

四舍五入到最接近的值,四舍五入一半:

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

围捕:

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

相关内容