加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

shell 中对小数进行比较的方法总结

(2010-01-16 00:22:21)
标签:

linux

shell

分类: shell

写个调度器需要对小数之间进行大小比较,经查询shell中 可以用 bc 对小数进行运算

example:

#echo 5.5+1.1 | bc

6.6

具体情况#man bc

然而对小数进行比较的相关方法有几个:

1. 自己的解决方法,判断小数点后最多有几位数(N),然后对将要比较的两个数值进行 乘与10的N次方

也就是将小数点去掉来进行比较(小数点后位数多的直接去掉小数点,少的用0补齐)

example:

6.6 x 10 >5.5x10   66>55

6.6666 x 10000 > 5.5 x10000    66666>55000

提示:使用 num=6.6666;echo $num | awk 'BEGIN{FS="."}{print length($2)}'判断小数点后的位数

当然,如果你确定小数点后最多肯定不会超过4位你可直接去掉10000,类推。。

2. 直接用awk

awk -v num1=6.6 -v num2=5.5 'BEGIN{print(num1>num2)?"0":"1"}'

如果num1>num2打印输出0,否则输出1

3.expr

比较妙的方法 expr $a \> $b

返回1表示$a>$b, 0表示$a<$b

# a=6.6 b=5.5;expr $a \> $b

1

4. br

用br其实也是可以实现

echo "6.6>5.5" |br

1

echo "5.5>6.6" | br

0

                                       from: http://renylai.blogbus.com/logs/27962818.html

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有