Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re: Equality checking for strings AND numbers

by toma (Vicar)
on Jul 13, 2007 at 08:11 UTC ( #626394=note: print w/replies, xml ) Need Help??

in reply to Equality checking for strings AND numbers

This is a difficult problem in Perl for the most general case. Numbers like 1111111111111111111e1111111111111111111 pass the 'looks_like_number' test but don't fare well in arithmetic expressions. This doesn't do what you would hope:
use strict; use warnings; use Scalar::Util qw(looks_like_number); my $c="11111111111111111e11111111111111111"; my $d="22222222222222222e22222222222222222"; if (looks_like_number($c) and looks_like_number($d) and $c == $d) { print "$c = $d\n"; }
It should work perfectly the first time! - toma

Replies are listed 'Best First'.
Re^2: Equality checking for strings AND numbers
by Anonymous Monk on Jul 13, 2007 at 14:33 UTC
    That's probably because those large numbers are essentially Infinity? At least as far as normal numerical storage goes? The looks_like_number call does allow for Infinity, and treats it like a number, and Infinity == Infinity should be true!

    I don't need to the use of any of the "big" number support, which I believe doesn't play well with the looks_like_number anyway.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://626394]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (6)
As of 2016-10-22 08:00 GMT
Find Nodes?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?

    Results (293 votes). Check out past polls.