我确信这是可能的,但我的数学并不是那么出色。
我在我的页面上显示最新电影,我的应用程序使用 5 星评级系统,但是,我从 Web 服务收到的数据以百分比形式到达,例如 50%。
有什么办法可以将此百分比转换为等值的星级,在这种情况下为 50% = 2.5,允许我显示 2.5 颗星?
当我有 50% 的时候看起来很简单,但如果我有 94%,它会把我可怜的小豌豆弄糊涂了!请帮忙。
我确信这是可能的,但我的数学并不是那么出色。
我在我的页面上显示最新电影,我的应用程序使用 5 星评级系统,但是,我从 Web 服务收到的数据以百分比形式到达,例如 50%。
有什么办法可以将此百分比转换为等值的星级,在这种情况下为 50% = 2.5,允许我显示 2.5 颗星?
当我有 50% 的时候看起来很简单,但如果我有 94%,它会把我可怜的小豌豆弄糊涂了!请帮忙。
如果要将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
计算百分比的公式相当简单:
$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