3

我确信这是可能的,但我的数学并不是那么出色。

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

有什么办法可以将此百分比转换为等值的星级,在这种情况下为 50% = 2.5,允许我显示 2.5 颗星?

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

4

3 回答 3

14

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

如果您希望它位于半星边界上,则将其除以,这10就是您需要的半星数。

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

您可能还想考虑在除法期间更智能地舍入它,而不是截断,这样 99% 之类的东西就是 5 颗星(而不是 4.5 颗星)。这可以通过简单地在除法之前添加一半的量来完成,例如(在 C 中):

int percent = 94;
int halfstars = (percent + 5) / 10;

对于介于 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
于 2012-11-04T00:31:17.233 回答
3

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

$percentInDecimalForm * $number

例如,94% 的评分将是:

.94 * 5 = 4.7
于 2012-11-04T00:32:15.363 回答
1

您只需要解决以下问题:

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
于 2012-11-04T00:38:09.977 回答