所以,我需要创建以下函数,但是如果没有复杂的数学运算,我的脑子就不会想到PHP的任何可能性。
我已经在Google上搜索了2个小时,唯一出现的是Excel论坛。是否可以使用一些简单的PHP行?
答案 0 :(得分:87)
由于您正在寻找第四个(.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
,{ {1}},.375
,.5
,.625
,.75
)。例如:
1.77,最接近第八个:
1.77 * 8 = 14.16
ceil(14.16)= 15.00
15.00 / 8 = 1.875
只是为了好玩,你可以写一个这样的函数:
.875
答案 1 :(得分:4)
请注意,答案并非真的不透水。由于我们在这里处理浮点数,因此无法保证当您将舍入数除以分母时它返回一个整齐的圆数。它可能会返回1.499999999999而不是1.5。这是浮点数的本质。
在从函数返回数字之前需要另一轮。
以防万一有人像我一样从谷歌这里登陆:)
答案 2 :(得分:2)
在这里查看示例#3,它是解决方案的一半 - http://php.net/manual/en/function.round.php
答案 3 :(得分:1)
根据Excel中的mround()
功能:
function MRound($num,$parts) {
$res = $num * $parts;
$res = round($res);
return $res /$parts;
}
echo MRound(-1.38,4);//gives -1.5
echo MRound(-1.37,4);//gives -1.25
echo MRound(1.38,4);//gives 1.5
echo MRound(1.37,4);//gives 1.25