2010-04-24 89 views
0

我想圆一个数字的显著数字的具体数量 - 基本上我想有以下功能: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 

怎么能当它分配给一个变量计算的结果会有所不同?

+0

也许你没有运行你认为你是的代码。当我运行上面的代码时,我看到:“4.1918522 4.1918522
” – MtnViewMark 2010-04-24 17:04:59

+0

我不知道这是否相关,但函数round_to_sf似乎接受3个参数,但函数调用似乎只用2个参数调用......可能是我错了:( – 2010-04-24 17:05:19

+0

我得到了>警告:缺少第3行的round_to_sf(),在第10行调用C:\ xampp \ htdocs \ code \ playground \ test.php并在C:\ xampp \ htdocs \ code \游戏\ test.php在线2 4.1918522 4.1918522
dkinzer 2010-04-24 17:24:43

回答

1

使用注释二进制搜索调试方法,我缩小了这一点。

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

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

如果我发表评论,我从我的四舍五入功能得到一个正确的结果。

任何人都可以告诉我......这是怎么回事吗?这让我把头发拉出一天。它还导致了其他类似内存碎片的错误 - 我将运行一个应该产生浮点数foo的计算,并且foo将用于其他生成正确输出的计算,但回显foo将显示A.KIPGGGGGGGGG

相关问题