我正在使用php和MySQL为一个网站制作一个5星产品评论,一切都很好,除了我的总星, 提交评论时,客户只能添加1到5颗星(第5号),然后我将每个评论的评分相加并除以评论数。现在问题是我需要获得1,1.5,2,2.5等等,有时候我会得到像3.66768748这样的东西。
如何对数字进行舍入,以便如果它超过.5它将是最小的.5它将是ceil,如果它是.5它保持不变,如果它小于.5它会落地吗?
我可以使用内置函数吗?
提前谢谢!
答案 0 :(得分:1)
以下函数将舍入到最接近的位置 - 下一个最低整数,下一个最高整数,或它们之间的中间点。
function half_star_round($input) {
$frac = $input - floor($input);
if($frac < 0.25) {
return floor($input);
} else if($frac >= 0.75) {
return ceil($input);
} else {
return floor($input) + 0.5;
}
}
答案 1 :(得分:1)
这很有效。将要舍入的值传递给第二个arg。在您的情况下 0.5
function roundTo($value, $roundTo = 1) {
$rounded = round($value); // 4
$roundToComparer = $roundTo / 2;
if ($value < $rounded) { // rounded to ceiling
if (($rounded - $roundToComparer) > $value) {
$rounded = $rounded - $roundTo;
}
} else { // rounded to floor
if (($rounded + $roundToComparer) < $value) {
$rounded = $rounded + $roundTo;
}
}
return $rounded;
}
$rating = 3.66768748;
echo roundTo($rating, 0.5);
答案 2 :(得分:0)
答案 3 :(得分:-1)
Php证明了圆形函数。