31 php printf rounding floor ceil
所以,我需要创建以下函数,但是如果没有复杂的数学运算,我的脑袋就不会想到PHP的任何可能性.
我现在已经在Google上搜索了2个小时,唯一出现的就是Excel论坛.是否可以使用一些简单的PHP行?
Wis*_*guy 96
既然你正在寻找四分之三(.00,.25,.50,.75),乘以4你的电话号码,向最接近的整数根据需要(floor如果向下,ceil如果向上),然后除以4.
1.32,降到最接近的第四位:
1.32*4 = 5.28
楼层(5.28)= 5.00
5.00/4 = 1.25
相同的原理适用于任何其他组分,例如三分之二或八分(.0,.125,.25,.375,.5,.625,.75,.875).例如:
1.77,最接近第八位:
1.77*8 = 14.16
ceil(14.16)= 15.00
15.00/8 = 1.875
只是为了好玩,你可以写一个这样的函数:
function floorToFraction($number, $denominator = 1)
{
$x = $number * $denominator;
$x = floor($x);
$x = $x / $denominator;
return $x;
}
echo floorToFraction(1.82); // 1
echo floorToFraction(1.82, 2); // 1.5
echo floorToFraction(1.82, 3); // 1.6666666666667
echo floorToFraction(1.82, 4); // 1.75
echo floorToFraction(1.82, 9); // 1.7777777777778
echo floorToFraction(1.82, 25); // 1.8
Run Code Online (Sandbox Code Playgroud)
小智 5
请注意,答案并不是真正无懈可击。由于我们在这里处理浮点数,因此不能保证当您将舍入数除以分母时,它会返回一个整齐的舍入数。它可能返回 1.499999999999 而不是 1.5。这是浮点数的本质。
在从函数返回数字之前需要进行另一轮。
以防万一有人像我一样从谷歌登陆这里:)