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


in reply to When is a 2 not a 2?

My Math::BigApprox is smarter than regular floating point numbers. It knows that $x == $y iff $x eq $y so you won't have that problem when using it:

use Math::BigApprox 'c'; my $x= c(1); while( $x < 2 ) { print "$x\n"; $x += 0.1; } print "Stop: x=$x\n"; print "Not 2\n" if $x != 2;

and such numbers have about the same precision as floating point when using such small numbers, they don't have a big performance impact (mostly just the cost of overload.pm), and you can compute 500,000! (factorial, about 1.0228e+2632341) without overflowing nor taking all day.

...which gives me another idea for a very simple module. Math::Eq ?

- tye