使用PHP将舍入数字逼近0.2

时间:2009-04-28 06:22:42

标签: php math rounding

我正在使用五角星创建此评级系统。我希望标题包括平均评级。所以我创造了显示1/5的星星。使用“1.2”我将获得一颗完整的恒星和下一颗恒星上的一个点,依此类推......

但是我还没有找到一个很好的方法来最接近最接近的.2 ......我想我可以乘以10,然后是一轮,然后转到第1轮到第2轮,第3轮到4等等。但这似乎乏味而且没必要......

5 个答案:

答案 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 //

就这么简单。