0

问题是,是否有一种简单的机械方法可以在不使用条件逻辑的情况下知道要绘制哪些星星(金色、1/2 金色、灰色),例如使用基于简单数学函数结果的指向正确星星的指针在五星级显示中生成星级。

这个问题的重点不是评级系统,而是图形显示

我的评分值为 0-100,浮点数。

例如,在伪代码中:

bitmap1="http://myserver.com/goldstar.png"
bitmap2="http://myserver.com/halfstar.png"
bitmap3="http://myserver.com/greystar.png"
rating=89.003
possible=100
quantized=int(rating/possible)
imagearray=[bitmap1,bitmap2,bitmap3]

for i=0 to 4
    selector=<compute which star to draw based on available data>
    drawstars(25*i,100,imagearray[selector])
end for

希望这会让您对我正在尝试做的事情有所了解。

4

2 回答 2

3

将显示视为一个比例,但以整数表示,因此以半星表示。例如,如果我们有 5 颗星,并且可以显示半颗星,那么我们的真实刻度是从 0 到 10。那么,我们需要做的是将原始刻度(0 到 100)除以得到 0 到 10。然后我们将整数除以 2。其商将为我们得出要绘制的完整星数,余数为要绘制的半星数(0 或 1)。

不过,您可能需要先进行一些舍入——否则,基本上不可能获得 5 星的评分(例如,即使输入分数为 99,也只能给出 4.5 星)。

于 2012-12-01T03:25:27.727 回答
1

嗯,如果我要试一试的话……

在 for 循环中,从 i=1 到 5。

if (rating > i*20){ draw a gold star }
else{
    if (rating > (i-1)*20 +10) {draw a half star }
    else {draw a grey star}
}

这当然会给你最低评分

于 2012-11-30T23:35:08.847 回答