代码之家  ›  专栏  ›  技术社区  ›  David

为什么我的计算会产生一个不同的结果,当我把它赋给一个变量?

php
  •  0
  • David  · 技术社区  · 16 年前

    round(12345.67, 2) -> 12000
    round(8888, 3) -> 8890
    

    我有以下问题,但有一个奇怪的问题。

    function round_to_sf($number, $sf) 
    {
     $mostsigplace = floor(log10(abs($number)))+1;
     $num = $number / pow(10, ($mostsigplace-$sf));
    
     echo ($number / pow(10, ($mostsigplace-$sf))).' '.$num.'<BR>';
    }
    
    round_to_sf(41918.522, 1);
    

    生成以下输出:

    4.1918522 -0
    

    当一个计算的结果被分配给一个变量时,它怎么可能是不同的呢?

    1 回复  |  直到 16 年前
        1
  •  1
  •   David    16 年前

    很明显,在另一个函数中,甚至在一个完全不同的文件中,下面的行就是问题所在。

    $diff = date_diff(new DateTime($lastdate), new DateTime("NOW"));
    

    谁能告诉我。。。。这是怎么回事?这让我把头发扯了一天。它还导致了其他类似内存踩踏的bug——我会运行一个应该产生一个float的计算 foo ,和 会显示 A.KIPGGGGGGGGG .

    推荐文章