ID:               31504
 Updated by:       [EMAIL PROTECTED]
 Reported By:      charlesb at ekit-inc dot com
-Status:           Assigned
+Status:           Feedback
 Bug Type:         Variables related
 Operating System: sol9 i86, sol8 sparc, sol9 sparc
 PHP Version:      4.3.10
 Assigned To:      derick
 New Comment:

Can you please try the snapshot? We can't test this as we don't have
access to a sol. box and it would be a shame if it still borks on
solaris in 4.3.11.

And FYI, it's not because we work around an OS bug, it is because we
need a non-locale aware version.


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

[2005-01-13 04:11:19] charlesb at ekit-inc dot com

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).

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

[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