PHP - 当我将它分配给变量时,为什么我的计算会产生不同的结果?

时间:2010-04-24 16:51:51

标签: php

我想将数字四舍五入到特定数量的有效数字 - 基本上我想要以下函数:

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 个答案:

答案 0 :(得分:1)

使用注释的二进制搜索方法调试,我把它缩小了。

显然,另一个函数中的以下行甚至是一个完全不同的文件。

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

如果我发表评论,我会从舍入函数中得到正确的结果。

谁能告诉我这里发生了什么?这让我把头发撕成了一天。它还导致其他错误看起来像内存踩踏 - 我运行的计算应该产生一个浮点foo,而foo将用于产生正确输出的其他计算,但回显{{1会显示foo