我正在使用五角星创建此评级系统。我希望标题包括平均评级。所以我创造了显示1/5的星星。使用“1.2”我将获得一颗完整的恒星和下一颗恒星上的一个点,依此类推......
但是我还没有找到一个很好的方法来最接近最接近的.2 ......我想我可以乘以10,然后是一轮,然后转到第1轮到第2轮,第3轮到4等等。但这似乎乏味而且没必要......
答案 0 :(得分:28)
round(3.78 * 5) / 5 = 3.8
答案 1 :(得分:18)
灵活的解决方案
function roundToNearestFraction( $number, $fractionAsDecimal )
{
$factor = 1 / $fractionAsDecimal;
return round( $number * $factor ) / $factor;
}
// Round to nearest fifth
echo roundToNearestFraction( 3.78, 1/5 );
// Round to nearest third
echo roundToNearestFraction( 3.78, 1/3 );
答案 2 :(得分:4)
function round2($original) {
$times5 = $original * 5;
return round($times5) / 5;
}
答案 3 :(得分:3)
所以你的总数是25,是否可以不使用花车并使用1-> 25/25?这样就需要更少的计算......(如果有的话)
答案 4 :(得分:1)
为什么每个人都提供需要更深入检查或转换的解决方案?想要0.2吗?然后:
round($n / 0.2) * 0.2; // $n = 3.78 / 0.2 = 18.9 (=) 19 * 0.2 = 3.8 //
想要5?然后:
round($n / 5) * 5; // $n = 17 / 5 = 3.4 (=) 3 * 5 = 15 //
就这么简单。