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

dsb has asked for the wisdom of the Perl Monks concerning the following question:

This issue came up because I was setting some values using the rand() function, then requesting them through a SOAP request where the were received as strings. A numeric comparison between two numers that were seemingly the same failed:
# these two variables are indentical when printed to STDOUT $var1 = rand(1); $var2 = $soapres->dataof('//path/to/elem/')->attr->{attr}; if ( $var1 == $var2 ) { print "all is well\n"; } else { print "got problems?\n"; }
The comparison invariably failed. However, when I did a string comparison, it succeeded.
# these two variables are indentical when printed to STDOUT $var1 = rand(1); $var2 = $soapres->dataof('//path/to/elem/')->attr->{attr}; if ( $var1 eq $var2 ) { print "all is well\n"; } else { print "got problems?\n"; }
I'm guessing that this has something to do with the internal representation of the value returned by rand(). I'm guessing that the value is stored internally with a greater precision, so the numeric comparison between that value and the "truncated" value fails.

Of course...this is just my theory.


dsb
This @ISA my( $cool ) %SIG