'1.8' == 1.8 can return false
| From: | Todd Ruth | Date: | Sat, 12 Apr 2008 01:01:04 +0000 |
| Subject: | '1.8' == 1.8 can return false | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-36980@lists.php.net to get a copy of this message | ||
I'm thinking there must be a bug in the heart of php
causing this. I'll debug it, but I haven't looked at
php source code in a few years and would like a tip as
to which files are involved in evaluating "==". Here
is a fragment from my code and the output:
...
print "<pre>\n";
var_dump($max);
var_dump($nms);
var_dump($nms == $max);
$max = (float)$max;
$nms = (string)$nms;
var_dump($max);
var_dump($nms);
var_dump($nms == $max);
$max = (string)$max;
$nms = (float)$nms;
var_dump($max);
var_dump($nms);
var_dump($nms == $max);
print "</pre>\n";
...
string(3) "1.8"
float(1.8)
bool(false)
float(1.8)
string(3) "1.8"
bool(true)
string(3) "1.8"
float(1.8)
bool(true)
I found this using php 5.2.3. I just upgraded to php 5.2.5
and am receiving the exact same result. Obviously, I can't
reproduce it with a simple var_dump("1.8"==1.8). :(
I guess something is getting corrupted, and I will add debug
output until I find out what (or Murphy removes the problem
by adding debug output; then I'm not sure what I'll do).
Thanks for any tips on which files I should look at it.
Thanks,
Todd