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:

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


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

[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