在 5 星评级系统中将评级转换为百分比
Convert rating to percentage in 5 star rating system
我的一个项目采用 5 星评级系统。我想将每颗星转换为百分比值。
这是我的数据库
star1
star2
star3
star4
star5
tot_stars
average
我用来获得评分的计算
$cal = ($star1*1 + $star2*2 + $star3*3 + $star4*4 + $star5*5)/$total_stars;
$avg = number_format($cal, 2);
我想知道的是每颗星的百分比计算公式是什么
示例:Yelp.com 在他们的网站上执行此操作
好吧,我会建议在您的数据库中进行数学计算,并让它 return 您成为一个浮点值。这样您就可以轻松地以 "percentage" 样式显示星星。
示例:
SELECT (CAST(
(star1*1) + (star2*2) + (star3)*3 + (star4*4) + (star5*5)
as float)/15) as percentageStars
作为您的显示示例:
- 5 颗星:80-100
- 4星:60-80
- 3星:40-60
- 2 颗星:20-40
- 1星:0-20
由于您知道 1 星跨越 20 分,因此您可以轻松地将 1 分作为回答星的填充因子的 5%。我想您之后会尝试将其转换为 css 属性 以显示星星的颜色,对吧?
示例:
你得到的评级是……嗯,拉特说 4.8。这意味着您可以只使用完整值作为总星数,即 4。之后您可以使用模数 (%1
) 来获得剩余值。例如,可以将此剩余值乘以 100 以获得 css 的百分比填充因子。
公式:
4.8%1 = 0.8 * 100 = 80
希望这对您有所帮助?
如果您的目标是获得(例如)1 星评级的百分比,则只需将 star1
除以评级数量(我猜是 tot_stars
,尽管这个名字似乎另有暗示)。那给你一个比例;乘以 100 得到百分比。
因此,例如,让数据库进行数学计算:
SELECT star1, star1 * 100 / tot_stars AS percent1,
star2, star2 * 100 / tot_stars AS percent2,
star3, star3 * 100 / tot_stars AS percent3,
star4, star4 * 100 / tot_stars AS percent4,
star5, star5 * 100 / tot_stars AS percent5
FROM starsTable
或在 PHP 中进行:
<?php
// Example data
$star1 = 1;
$star2 = 5;
$star3 = 7;
$star4 = 10;
$star5 = 8;
$tot_stars = $star1 + $star2 + $star3 + $star4 + $star5;
for ($i=1;$i<=5;++$i) {
$var = "star$i";
$count = $$var;
$percent = $count * 100 / $tot_stars;
for ($j=1;$j<=5;++$j) {
echo $j <= $i ? "☆ " : " ";
}
printf("\t%2d (%5.2f%%)\n", $count, $percent,2);
}
?>
输出这个:
☆ 1 ( 3.23%)
☆ ☆ 5 (16.13%)
☆ ☆ ☆ 7 (22.58%)
☆ ☆ ☆ ☆ 10 (32.26%)
☆ ☆ ☆ ☆ ☆ 8 (25.81%)
我提出了一个解决方案,它是一个函数,它获取一个以星星为值的数组。我们计算总值,然后逐一计算百分比。我们 return 百分比。每个百分比将对应于输入中具有相同索引的星号。
function getPercentages($inputValues) {
$totalValues = 0;
foreach ($inputValues as $inputValue) {
$totalValues += $inputValue;
}
$outputValues = array();
foreach ($inputValues as $key => $inputValue) {
$outputValues[$key] = 100 * $inputValue / $totalValues;
}
return $outputValues;
}
我的一个项目采用 5 星评级系统。我想将每颗星转换为百分比值。
这是我的数据库
star1
star2
star3
star4
star5
tot_stars
average
我用来获得评分的计算
$cal = ($star1*1 + $star2*2 + $star3*3 + $star4*4 + $star5*5)/$total_stars;
$avg = number_format($cal, 2);
我想知道的是每颗星的百分比计算公式是什么
示例:Yelp.com 在他们的网站上执行此操作
好吧,我会建议在您的数据库中进行数学计算,并让它 return 您成为一个浮点值。这样您就可以轻松地以 "percentage" 样式显示星星。
示例:
SELECT (CAST(
(star1*1) + (star2*2) + (star3)*3 + (star4*4) + (star5*5)
as float)/15) as percentageStars
作为您的显示示例:
- 5 颗星:80-100
- 4星:60-80
- 3星:40-60
- 2 颗星:20-40
- 1星:0-20
由于您知道 1 星跨越 20 分,因此您可以轻松地将 1 分作为回答星的填充因子的 5%。我想您之后会尝试将其转换为 css 属性 以显示星星的颜色,对吧?
示例:
你得到的评级是……嗯,拉特说 4.8。这意味着您可以只使用完整值作为总星数,即 4。之后您可以使用模数 (%1
) 来获得剩余值。例如,可以将此剩余值乘以 100 以获得 css 的百分比填充因子。
公式:
4.8%1 = 0.8 * 100 = 80
希望这对您有所帮助?
如果您的目标是获得(例如)1 星评级的百分比,则只需将 star1
除以评级数量(我猜是 tot_stars
,尽管这个名字似乎另有暗示)。那给你一个比例;乘以 100 得到百分比。
因此,例如,让数据库进行数学计算:
SELECT star1, star1 * 100 / tot_stars AS percent1,
star2, star2 * 100 / tot_stars AS percent2,
star3, star3 * 100 / tot_stars AS percent3,
star4, star4 * 100 / tot_stars AS percent4,
star5, star5 * 100 / tot_stars AS percent5
FROM starsTable
或在 PHP 中进行:
<?php
// Example data
$star1 = 1;
$star2 = 5;
$star3 = 7;
$star4 = 10;
$star5 = 8;
$tot_stars = $star1 + $star2 + $star3 + $star4 + $star5;
for ($i=1;$i<=5;++$i) {
$var = "star$i";
$count = $$var;
$percent = $count * 100 / $tot_stars;
for ($j=1;$j<=5;++$j) {
echo $j <= $i ? "☆ " : " ";
}
printf("\t%2d (%5.2f%%)\n", $count, $percent,2);
}
?>
输出这个:
☆ 1 ( 3.23%)
☆ ☆ 5 (16.13%)
☆ ☆ ☆ 7 (22.58%)
☆ ☆ ☆ ☆ 10 (32.26%)
☆ ☆ ☆ ☆ ☆ 8 (25.81%)
我提出了一个解决方案,它是一个函数,它获取一个以星星为值的数组。我们计算总值,然后逐一计算百分比。我们 return 百分比。每个百分比将对应于输入中具有相同索引的星号。
function getPercentages($inputValues) {
$totalValues = 0;
foreach ($inputValues as $inputValue) {
$totalValues += $inputValue;
}
$outputValues = array();
foreach ($inputValues as $key => $inputValue) {
$outputValues[$key] = 100 * $inputValue / $totalValues;
}
return $outputValues;
}