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

0a052af855d0?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值