#31504 [Asn->Fbk]: -Infinity value returned for long float nums

From: Date: Thu, 13 Jan 2005 07:17:36 +0000
Subject: #31504 [Asn->Fbk]: -Infinity value returned for long float nums
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-72058@lists.php.net to get a copy of this message
ID: 31504 Updated by: derick@php.net 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] derick@php.net 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

« previous php.bugs (#72058) next »