in reply to Strange (rounding?) problem

When programming in a strongly-typed language, you get it drummed in at an early age that you never, never compare floating point values for equality. So C coders might invent some way of representing how close they expect the values to be to be as good as the same, for example you might say that 0.1% difference is not worth worrying about: (pseudocode)
if ( (( x - y ) / x ) * (( x - y ) / x ) > 0.001 * 0.001 ){ ## they are different }
Now Perl with its weak typing lulls us into a sense of security, especially with behind the scenes extras like only converting the sensible part of a floating point number into a string. So instead of the shenanigans of the strongly typed language, use Perl's behind the scenes extras by comparing the strings:
print "$x and $y are different\n" if ( $x ne $y );
You will see you don't even need to coerce the values to strings, let alone printf format them, just use eq and ne directly!
iakobski

Replies are listed 'Best First'.
(tye)Re: Strange (rounding?) problem
by tye (Sage) on May 02, 2001 at 19:44 UTC

    A ++ vote just isn't enough. I have to reply to help call attention to this neat trick (using ne and eq to compare floating-point numbers).

    Thanks!

            - tye (but my friends call me "Tye")