Krzys Majewski ([EMAIL PROTECTED]) said:
> and I take their average with "awk". This gives me some floating point
> number. Now I would like to  compare, in a shell script, this floating
> point number to some  other floating point  number. How do  people do
> this?

You could probably use awk to do it.

Anyways, here's a quick shell function that I whipped up to do simple
comparison... really, dealing with floating point in the shell is messy.
Also, this may be bash specific... I don't know if plain sh supports the $
# and % stuff.

# returns 0 if $1 > $2
# returns 1 if $1 < $2
# returns 2 if $1 = $2
# returns 3
cmp() {
        local int_a=${1%.*}
        local dec_a=${1#*.}
        local int_b=${2%.*}
        local dec_b=${2#*.}

        [ $int_a -lt $int_b ] && return 0
        [ $int_b -lt $int_a ] && return 1
        [ $int_b -eq $int_a ] && {
                [ $dec_a -lt $dec_b ] && return 0 
                [ $dec_b -lt $dec_a ] && return 1 
                [ $dec_b -eq $dec_a ] && return 2
        }
        return 3
}

I don't think the first -eq comparision is required, but it makes it a bit
more complete. It'll only work for decimals x.y where x and y are not
empty.

.adam

-- 
[                <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>                ]
[              icq #3354423 | lazur.org | clustermonkey.org              ]

Reply via email to