所以,我需要创建以下函数,但如果没有复杂的数学运算,我的头脑无法想到 PHP 中的任何可能性。
- 始终四舍五入到最接近的小数点(1.81 = 1.90、1.89 = 1.90、1.85 = 1.90)
- 始终四舍五入到最接近的小数点(1.81 = 1.80、1.89 = 1.80、1.85 = 1.80)
- 始终四舍五入到最接近的 x.25/x.50/x.75/x.00(1.81 = 2、1.32 = 1.50)
- 始终向下舍入到最接近的 x.25/x.50/x.75/x.00(1.81 = 1.75,1.32 = 1.25)
- 始终四舍五入到最接近的 x.50/1(1.23 = 1.50,1.83 = 2)
- 始终向下舍入到最接近的 x.50/1(1.23 = 1、1.83 = 1.50)
我已经在 Google 上搜索了 2 个小时,唯一出现的是 Excel 论坛。是否可以使用一些简单的 PHP 代码行?
最佳答案
因为您正在寻找 fourths(.00
、.25
、.50
、.75
),将您的数字乘以 4,根据需要四舍五入到最接近的整数(floor
如果向下,ceil
如果向上),然后除以 4 .
1.32,直到最近的四分之一:
1.32 * 4 = 5.28
floor(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
关于php - 四舍五入到最接近的分数(二分之一、四分之一等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14903379/