美文网首页Linux Shell
shell-03 关于bash shell小数的计算问题:

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

作者: georgesre | 来源:发表于2019-05-22 11:26 被阅读0次
    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 - 简书

    欢迎交流~

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/jveyzqtx.html