bcmath有时会返回浮点数,有时会返回舍入结果

时间:2012-07-28 13:51:03

标签: php bcmath

我有一个变量$newTime,这是由mktime()以秒为单位的时间,我希望将其转换为天数。

在这种情况下,它超过86.400(这是一天中的秒数),我尝试将其除以86.400以获得天数(四舍五入)。

但有时我会:

Case 1: 87951 / 86400 = 1.0179513888 (1 day ago)
Case 2: 156257 / 86400 = 1.8085300925 (2 days ago)

有时候:

Case 1: 87986 / 86400 = 1 (Should be 1 day ago)
Case 2: 156292 / 86400 = 1 (Should be 2 days ago)

这是代码:

$newTime = round(bcdiv($newTime, bcmul("24", bcmul("60", "60"))),0);

当我不使用bcmath,只使用常规数学($newTime / (60*60*24))时,我每次都会得到浮动结果。

2 个答案:

答案 0 :(得分:3)

您是否使用bcscale设置了比例?如果设置为0,则可以解释该行为。请尝试在计算之前调用bcscale(100);

答案 1 :(得分:1)

您可以使用:

$newTime = round( $newTime / (60 * 60 * 24));

完全没有bcmath。

示例:

$newTime = 156292;
$newTime = round( $newTime / (60 * 60 * 24));
echo $newTime; //2 Always

$newTime = 87986;
$newTime = round( $newTime / (60 * 60 * 24));
echo $newTime; //1 Always