V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hellohacker
V2EX  ›  程序员

PHP 浮点数相减的问题

  •  
  •   hellohacker · 2014-04-15 20:33:21 +08:00 · 3738 次点击
    这是一个创建于 3869 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <?php
    $d =2.99-1-1.99;
    echo $d;
    ?>
    输出结果 为什么不是 0 呢 ? 是 2.22044604925E-16

    怎样才能输出0 呢?

    我的做法是 每个数 乘以100 然后 运算完 除以 100
    7 条回复    1970-01-01 08:00:00 +08:00
    Ricepig
        1
    Ricepig  
       2014-04-15 20:35:13 +08:00
    基础知识啊。。。

    判断浮点数是不是等于0,不是用$d == 0,而是abs($d) < EPS,这个EPS是个很小的值。
    young
        2
    young  
       2014-04-15 20:45:33 +08:00
    基础知识啊。。。
    你需要的是 php的bc math
    http://www.php.net/manual/en/ref.bc.php
    mahone3297
        3
    mahone3297  
       2014-04-15 20:49:04 +08:00
    计算机的问题,跟php无关。。。
    jsonline
        4
    jsonline  
       2014-04-15 20:56:18 +08:00 via Android
    楼主,计算机很傻的
    zog
        5
    zog  
       2014-04-15 21:10:46 +08:00
    计算机存储都是2进制,十进制浮点数有时候无法完全对应二进制。所以经常会出现这种情况。
    zog
        6
    zog  
       2014-04-15 21:11:52 +08:00
    python下控制台下输入2.3 + 2.4,结果是:4.69999999999999999
    txlty
        7
    txlty  
       2014-04-15 21:16:10 +08:00
    直接贴到地址栏:
    javascript:alert(16.9*100);
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   886 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 21:31 · PVG 05:31 · LAX 13:31 · JFK 16:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.