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

From: Date: Thu, 13 Jan 2005 03:11:20 +0000
Subject: #31504 [Asn]: -Infinity value returned for long float nums
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-72024@lists.php.net to get a copy of this message
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] 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 (#72024) next »