ID:               43487
 Updated by:       [EMAIL PROTECTED]
 Reported By:      jm at wo dot cz
-Status:           Open
+Status:           Feedback
 Bug Type:         Strings related
 Operating System: Linux
 PHP Version:      5.2.5
 New Comment:

I can't reproduce either:

]# php -r '$f=1E-6; echo $f, "\n";'
1.0E-6

And pretty much the same configure options.
btw. Many of the options you used don't even exist, did you pay
attention to the last lines of the output after running configure?
(it warns you about unknown options)

Try this yourself:
# php -n -r '$f=1E-6; echo $f, "\n";'

(-n makes sure you don't use any php.ini which might have different
precision set)


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

[2007-12-03 19:17:07] jm at wo dot cz

Interesting that you can't reproduce it, I did not expect that,
otherwise I would have provided the build info. Nevertheless, I have
just recompiled php and the bug is still there.

The glibc is 2.3.6 and gcc is 4.2.1.

Here is the build set up:

 PHP_CONFIGURE="\
  --prefix=/usr                 \
  --sysconfdir=/etc             \
  --with-config-file-path=/etc  \
  --disable-static              \
  --disable-debug               \
  --disable-rpath               \
  --enable-inline-optimization  \
  --enable-pic                  \
  --enable-bcmath               \
  --enable-calendar             \
  --enable-magic-quotes         \
  --enable-track-vars           \
  --enable-safe-mode            \
  --enable-sysvsem              \
  --enable-sysvshm              \
  --enable-force-cgi-redirect   \
  --enable-trans-sid            \
  --enable-yp                   \
  --enable-ftp                  \
  --enable-wddx                 \
  --enable-filepro              \
  --enable-dbase                \
  --with-versioning             \
  --with-gettext                \
  --with-mod_charset            \
  --with-layout=GNU             \
  --with-zlib                   \
  --with-bz2                    \
  --enable-exif                 \
  --with-regex=system           \
  --enable-mbstring=all         \
  --enable-mbregex              \
  --with-pspell  \
            --with-mhash \
             --with-mcrypt \
             --with-curl  \
             --with-gmp   \
             --with-openssl \
             --with-pgsql=/usr     \
             --with-gdbm   \
             --with-xml --with-expat-dir=/usr   \
             --with-xsl    \
             --with-apxs2     \
  --with-t1lib=/usr/share/t1lib   \
  --with-freetype-dir=/usr/lib    \
  --with-gd "

 ./configure  $PHP_CONFIGURE

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

[2007-12-03 18:41:25] [EMAIL PROTECTED]

Not enough information was provided for us to be able
to handle this bug. Please re-read the instructions at
http://bugs.php.net/how-to-report.php

If you can provide more information, feel free to add it
to this bug and change the status back to "Open".

Thank you for your interest in PHP.


Floats might be imprecise... they shouldn't be wrong. I can't reproduce
this though.

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

[2007-12-03 18:16:43] [EMAIL PROTECTED]

Floating point values have a limited precision. Hence a value might 
not have the same string representation after any processing. That also
includes writing a floating point value in your script and directly 
printing it without any mathematical operations.

If you would like to know more about "floats" and what IEEE
754 is read this:
http://docs.sun.com/source/806-3568/ncg_goldberg.html
 
Thank you for your interest in PHP.

.

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

[2007-12-03 16:53:25] jm at wo dot cz

Description:
------------
Some float numbers are incorrectly converted to string values:

I found it by playing with eval and getting wrong results. Then I did:

echo floatval('3.86e-6');    // output: 3.86E-6
echo floatval('1.01e-6');    // output: 1.01E-6

But

echo floatval('1E-6');       // output: :.0E-7

But one can do:

$f=1E-6;
echo $f;                      // output: .0E-7

So it must be a problem with float to string conversion.

Reproduce code:
---------------
$f=1E-6;
echo $f;                      // output: :.0E-7


Expected result:
----------------
1.0E-6

Actual result:
--------------
:.0E-7


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


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

Reply via email to