ID:               26349
 Updated by:       [EMAIL PROTECTED]
 Reported By:      kouber at saparev dot com
-Status:           Open
+Status:           Bogus
 Bug Type:         Math related
 Operating System: Win 2000 NT
 PHP Version:      4.3.4
 New Comment:

Please see the note on the maximum value of floats at 
 
http://www.php.net/manual/en/language.types.float.php 
 
When is_numeric() checks a string, it tries to convert the 
string to a long, then a double. Anything greater than 
approximately 1.8e308 is too large for a double, so it 
becomes infinity. Try a var_dump() on the value and you'll 
see what I mean. (This behaviour is platform-dependent, of 
course.) 
 
J 


Previous Comments:
------------------------------------------------------------------------

[2003-11-21 09:22:31] kouber at saparev dot com

Description:
------------
is_numeric() always returns false for strings with more than 308
characters, even if all of them are digits.

308 = 255 + 63 = 2^8-1 + 2^6-1

Reproduce code:
---------------
<?
$s = str_repeat('6', 309);

var_dump($s);

var_dump(is_numeric($s));
?>

Expected result:
----------------
string(309)
"666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"
bool(true)

Actual result:
--------------
string(309)
"666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"
bool(false)


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=26349&edit=1

Reply via email to