ID:               31504
 User updated by:  charlesb at ekit-inc dot com
 Reported By:      charlesb at ekit-inc dot com
 Status:           Assigned
 Bug Type:         Variables related
 Operating System: sol9 i86, sol8 sparc, sol9 sparc
 PHP Version:      4.3.10
 Assigned To:      derick
 New Comment:

OK, this looks like the error discussed in bugs 31107 and 31121 (but is
reported as a build error instead, which is why I missed it).

It's to do with php's test being endian is wrong for solaris and we
presume will see the fix in 4.3.11.  (or we'll grab the snapshot).

Case closed (for now).


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

[2005-01-13 03:53:54] charlesb at ekit-inc dot com

I'll just add that I've only confirmed that c-code problem on sol9/x86.

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

[2005-01-13 03:41:40] charlesb at ekit-inc dot com

Can't help you with access to a sol box, but I can confirm it is that
function at fault.  On FC 1 the following C code produces the correct
result but on solaris it produces 
-Inf, ie is a bug.

You might be interested to know that the solaris strtod function can
handle the number no problems, so if you rolled your own zend_strtod
function to get around an OS bug, you don't need to for Solaris :)

char *cp;
double a = zend_strtod("6.48261999999999982691178956883959472179",
&cp);
printf("%g\n", a);

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

[2005-01-12 09:13:35] [EMAIL PROTECTED]

This works fine for me on Linux, I will need access to a solaris
machine with GDB installed to try to fix this... it's most likely
related to our new zend_strtod functions.

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

[2005-01-12 03:39:12] charlesb at ekit-inc dot com

Description:
------------
Basically we're seeing long floats being given a string value of
-Infinity, even if we explicitly cast the variable.  Python can handle
these vars no problem, don't see why PHP can't?  

Thanks


Reproduce code:
---------------
<?php
 
$a = '6.48261999999999982691178956883959472179';
 
$c = (double) $a;
 
$b = sprintf("%0.2f", $c);
 
print $c.' '.$b;
 
?>


Expected result:
----------------
6.48261999999999982691178956883959472179 6.48


Actual result:
--------------
-Infinity -0N


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


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

Reply via email to