【问题标题】:Star / half star rating function without if/then logic?没有 if/then 逻辑的星/半星评级功能?
【发布时间】:2012-11-30 23:17:03
【问题描述】:

问题是,是否有一种简单的机械方法可以在不使用条件逻辑的情况下知道要绘制哪些星星(金色、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

希望这能让您了解我正在尝试做什么。

【问题讨论】:

    标签: math graphics language-agnostic quantization


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      在 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}
      }
      

      这当然会给你底价

      【讨论】:

      • 这也有效,但评分为 100 时从未达到 5 星
      • 没错,但就像我说的那样,它会给你一个底价。将 > 更改为 >=,它会给你 5* 的评分,评分为 100
      猜你喜欢
      • 2021-11-25
      • 2019-05-31
      • 1970-01-01
      • 2022-01-07
      • 2014-05-14
      • 2012-04-26
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多