非进度条逻辑

时间:2019-04-06 23:35:12

标签: ruby-on-rails logic progress-bar

我的进度栏:

https://imgur.com/M6S3xkA

问题:

您怎么看,这不是常规的进度条,对于我来说逻辑尚不清楚。

比方说-当您获得30分(从1000分起)时,进度条应该有50%, 但是如何计算这个魔幻数字?

通常情况下,满分30分(从1000分开始),您的得分应为<5%。

任何线索我都会高兴!

1 个答案:

答案 0 :(得分:0)

您应该根据划分的PARTS计算进度。在您的情况下,您将范围分为5个部分。

  • 第1步:找到当前点所在的部分。(如果点为30,则超过2个部分-(0..3)和(3..20))
  • 第2步:找到当前部分中点的百分比(如果点为30,则当前部分为(20..50)->百分比=(30-20)/(50-20)= 0.333
  • 第3步:组合它们并划分零件编号。

示例代码:

PARTS = [(0..3), (3..20), (20..50), (50..200), (200..1000)]
PARTS_NUMBER = PARTS.size   # 5

def calculate_percentage point
  part_index = PARTS.find_index {|x| x.include?(point)}
  part = PARTS[part_index]
  remain = (point - part.first) * 1.0 / (part.last - part.first)
  (part_index + remain) / PARTS_NUMBER
end

calculate_percentage(30)  # => 0.4666666666666667

希望对您有帮助:D