Edit report at https://bugs.php.net/bug.php?id=64307&edit=1

 ID:                 64307
 Updated by:         ni...@php.net
 Reported by:        sokkis at gmail dot com
 Summary:            Floating point error
 Status:             Not a bug
 Type:               Bug
 Package:            Variables related
 Operating System:   Gentoo linux
 PHP Version:        5.4.12
 Block user comment: N
 Private report:     N

 New Comment:

@sokkis: I don't quite understand what you are asking, but maybe you are 
looking for the "precision" ini option, which controls with how much precision 
floats will be displayed when converted to string. See here for an example: 
http://codepad.viper-7.com/o4M9q3


Previous Comments:
------------------------------------------------------------------------
[2013-02-27 09:46:45] sokkis at gmail dot com

"Floating point values have a limited precision"

It's ok, but why not:
244350,00000000... - 244350 = 2.9103830456734E-11
the output?

So, if floating point variable has limited precision, it has it if echod, and 
has 
if make subractions, or any other.

------------------------------------------------------------------------
[2013-02-27 09:42:45] paj...@php.net

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://www.floating-point-gui.de/

Thank you for your interest in PHP.



------------------------------------------------------------------------
[2013-02-27 09:31:27] sokkis at gmail dot com

Description:
------------
Floating point rounded when print, but won't on subtraction.

Test script:
---------------
<?php
    $n1 = 905000;
    $n2 = 0.27;
    $ertek =$n1*$n2;
    $egesz = round( $ertek );
    $eredmeny = $ertek-$egesz;
    echo "$ertek - $egesz = $eredmeny\n";

    $n1 = 905000;
    $n2 = 0.27;
    $ertek =$n1*$n2;
    $egesz = (int) $ertek;
    $eredmeny = $ertek-$egesz;
    echo "$ertek - $egesz = $eredmeny";


Expected result:
----------------
244350 - 244350 = 0
244350 - 244350 = 0

Actual result:
--------------
244350 - 244350 = 2.9103830456734E-11
244350 - 244350 = 2.9103830456734E-11


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



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

Reply via email to