我想将数字四舍五入到特定数量的有效数字 - 基本上我想要以下函数:
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 :(得分:1)
使用注释的二进制搜索方法调试,我把它缩小了。
显然,另一个函数中的以下行甚至是一个完全不同的文件。
$diff = date_diff(new DateTime($lastdate), new DateTime("NOW"));
如果我发表评论,我会从舍入函数中得到正确的结果。
谁能告诉我这里发生了什么?这让我把头发撕成了一天。它还导致其他错误看起来像内存踩踏 - 我运行的计算应该产生一个浮点foo
,而foo
将用于产生正确输出的其他计算,但回显{{1会显示foo
。