将评级百分比(50%)转换为PHP中的等效五星级评级

将评级百分比(50%)转换为PHP中的等效五星级评级,php,Php,我相信这是可能的,但我的数学并没有那么好 我在我的页面上播放最新的电影,我的应用程序使用五星级评级系统,但是,我从Web服务收到的数据以百分比的形式到达,例如50% 我有没有办法把这个百分比转换成一个星级,在这种情况下是50%=2.5,这样我就可以显示2.5颗星了 当我有50%的时候,这看起来相当简单,但如果我有94%,它会把我可怜的小豌豆弄糊涂!请帮助。如果要将0..100比例转换为0..5比例,只需除以20即可 如果你想让它位于半星边界上,那么用10除以它,这就是你需要的半星数 请记住,我这

我相信这是可能的,但我的数学并没有那么好

我在我的页面上播放最新的电影,我的应用程序使用五星级评级系统,但是,我从Web服务收到的数据以百分比的形式到达,例如50%

我有没有办法把这个百分比转换成一个星级,在这种情况下是50%=2.5,这样我就可以显示2.5颗星了


当我有50%的时候,这看起来相当简单,但如果我有94%,它会把我可怜的小豌豆弄糊涂!请帮助。

如果要将
0..100
比例转换为
0..5
比例,只需除以20即可

如果你想让它位于半星边界上,那么用
10除以它,这就是你需要的半星数

请记住,我这里讲的是整数除法,其中的值被截断(向下舍入)

<>你也可以考虑在划分过程中更智能地绕过它,而不是截断,这样99%的东西是5颗星(不是4.5)。这可以通过简单地在除法之前加上你要除法的一半来实现,比如(在C中):

这将为0到100(含)之间的输入值提供以下结果:

percent     halfstars
-------     ---------
  0-  4         0
  5- 14         1
 15- 24         2
 25- 34         3
 35- 44         4
 45- 54         5
 55- 64         6
 65- 74         7
 75- 84         8
 85- 94         9
 95-100        10

计算数字百分比的公式相当简单:

$percentInDecimalForm * $number
例如,94%的评级为:

.94 * 5 = 4.7

您只需要解决以下问题:

100% ---------- 5
 94% ---------- x = (94 * 5) / 100 (=) x = 4.7
现在有必要知道你的星阶的粒度(你可以划分星阶的次数)

既然你提到了0.5颗星,我假设你的星粒度是1/0.5=2,所以只要解:

round(4.7 * 2) / 2 (=) 9 / 2 (=) 4.5

@paxdiablo:事实上,94%应该是4.5星。@paxdiablo:最后一句/代码真让人困惑。以94%作为输入,它产生9.9个半星或4.95个星,这是不可能的;以99%作为输入,它产生10.4个半星或5.2个星,这也是不可能的。我想你应该澄清一下。@Alix,它不会给出9.9个半星,因为它是一个整数(截断)除法。相反,它会给出9,也就是4.5颗星。我会在回答中澄清。
round(4.7 * 2) / 2 (=) 9 / 2 (=) 4.5