DB<65> $num1 = '0019.90'; $num2 = '019.9' DB<66> p $num1+0 eq $num2+0 1 DB<67> p "$num1" == "$num2" 1 DB<68>
Not sure which one is technically better.
I find the second one more readable and easier to explain.
Well there are edge cases when the scalar is not purely numeric... but that's too complicated.
FWIW: the eq form can be further simplified with a unary +:
DB<109> printf "%.20f\n",$_ for $a,$b 2547200.00000000000000000000 2547199.99999999950000000000 DB<110> p +$a eq +$b # unary + 1 + DB<111> p $a == $b # doesn't work DB<112> p "$a" == "$b" # preferred variant 1
Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery
*) should be noted that this can't help fixing accumulated rounding errors.
In reply to Re^8: number comparison with a twist (updated)
by LanX
in thread number comparison with a twist
by anotherguest
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |