ID: 12612 Updated by: jeroen Reported By: [EMAIL PROTECTED] Old Status: Analyzed Status: Closed Bug Type: Scripting Engine problem Operating System: Windows 2000 Server SP1 5.0.2195 PHP Version: 4.0.4pl1 Old Assigned To: Assigned To: jeroen New Comment: >From http://www.docs.intranet.giga/php/language.types.integer.html: >From floating point numbers When converting from float to integer, the number will be rounded towards zero. If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31), the result is undefined, since the float hasn't got enough precision to give an exact integer result. No warning, not even a notice will be issued in this case! (I should have known, I wrote that myself...) So there this is "feature", AKA documented bug. Feel free to open a feature request to get that changed... In the manual it should be better noted in integers -> big number section that it goes for hex too. I'll do that in a minute. Status -> Closed (for the abs() bug) Previous Comments: ------------------------------------------------------------------------ [2001-08-07 17:04:39] [EMAIL PROTECTED] I wan't really clear on this one: PHP _does not support unsigned ints_ Generally, it support integers from -2147483648 to 2147483647 ------------------------------------------------------------------------ [2001-08-07 16:54:30] [EMAIL PROTECTED] PHP 4 handles number-constants smartly. I.e., when a number is out of range of integers, it will be auto-converted to float. var_dump(0x80000000) -> float(2147483648) While | requires int-arguments, and because it cannot convert float(2147483648) to int, it will take MAX_INT instead. That abs(MINIMAL_INT) bug, is a bug which I fixed yesterday (coincidence...) The 0x80000000 | 0; : apparently (int) 2147483648.0 => -2147483648 This IS a bug, because it should have been INT_MAX (2147483647) I'm currently trying to sort that out. By the way, do not put multiple bugs in one report. ------------------------------------------------------------------------ [2001-08-07 05:10:52] [EMAIL PROTECTED] $qq = 0x80000000; echo $qq; //2147483648 ok $qq = 0x80000000 | 0; echo $qq; //-2147483648 ??? echo abs($qq); //-2147483648 ??? echo $qq * -1; //2147483648 ------------------------------------------------------------------------ Edit this bug report at http://bugs.php.net/?id=12612&edit=1 -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]