所以,我需要创建以下功能,但我的脑袋也想不到的没有复杂的数学在PHP中的任何可能性。
- 轮始终到最接近的十进制(1.81 = 1.90,1.89 1.90 = 1.85 1.90 =)
- 轮始终至最接近的十进制(1.81 = 1.80,1.89 = 1.80Hz,1.85 = 1.80)
- 轮始终到最接近的X.25 / X.50 / X.75 /×.00(1.81 = 2,1.32 = 1.50)
- 轮始终至最接近的X.25 / X.50 / X.75 /×.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)
我已经搜索在谷歌2小时,现在并想出的唯一的东西是Excel的论坛。 是否有可能与PHP的一些简单的线条?
既然你正在寻找四分之三 ( .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
小区(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
请注意,答案是不是真的防水。 由于我们这里处理花车它不能保证当您通过分母除以圆形数字它返回一个整齐的轮数。 它可能会返回1.499999999999,而不是1.5。 这是浮点数的性质。
另一轮从函数返回的号码前需要。
万一有人在这里的土地从谷歌像我一样:)
在这里看例子#3,这是你的解决方案的一半- http://php.net/manual/en/function.round.php
按照mround()
在Excel函数:
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