1. 程式人生 > >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="."}{printlength($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