http://www.perlmonks.org?node_id=1025434


in reply to Simple adding numbers

When I used lt instead of < operator, it works as you expected. Still, lt operator used for comparing strings not for numerals. As per my understanding, perl tries to implicitly convert both $i and 1 as strings and do comparison. If somebody finds different reason for it, kindly clarify me.

my $range = 0.1; my $i = 0; while( $i lt 1 ) { print $i."\n"; $i = $i + $range; }

Replies are listed 'Best First'.
Re^2: Simple adding numbers
by davido (Cardinal) on Mar 26, 2013 at 05:38 UTC

    perl -E say 'Ouch!' if '0002' lt 1;

    Ouch!

    I would recommend caution if you're going to go down that road. The best thing to do is to simply understand the nature of floating point precision and deal with it in the most straight-forward way possible. Stringification has its uses, but bending the rules of numeric relational comparisons is probably not an ideal one.


    Dave