Linux Shell

shell-03 关于bash shell小数的计算问题:

2019-05-22  本文已影响0人  georgesre
image.png
关于bash shell小数的计算问题:
如果需要计算小数,则必须得使用bc函数。
例:计算 3.4+6.5*1.23  精确到小数点后2位。
echo "scale=2;3.4+6.5*1.23" | bc | sed 's/^\./0&/'
其中sed函数保证了即使z最终的值类似于:0.xx的情况下也是可以完美显示的。

例:

prob=`echo "scale=2;1 - ((1-$prob) * ($days-($numPeople-1)) / $days)" | bc | sed 's/^\./0&/'`
注意这里需要使用while循环来控制阶乘的计算。控制方法如下:
#!/bin/sh
days=365
numPeople=1
prob=0

c=1

while [ $c -eq 1 ];do
      numPeople=$(($numPeople+1))
      prob=`echo "scale=2;1 - ((1-$prob) * ($days-($numPeople-1)) / $days)" | bc | sed 's/^\./0&/'`
      c=`expr 1.0 \> $prob`
      echo "Number of People: $numPeople"
      echo "Prob. of same Birthday: $prob"
done
简单的说就是下面的表达:
[root@xiwen math]# b=0.00001 c=0.4;expr $b \> $c
0
[root@xiwen math]# b=0.00001 c=0.4;expr $b \< $c
1

云平台开发运维解决方案@george.sre

个人主页:https://geekgoogle.com

GitHub: https://github.com/george-sre

Mail: george.sre@hotmail.com

简书: georgesre - 简书

欢迎交流~

上一篇下一篇

猜你喜欢

热点阅读