Отображение числа в стиле репутации Stackoverflow - PullRequest
1 голос
/ 03 февраля 2011

Моя репутация выглядит как 2,606 .

  • Если бы у меня было больше, это выглядело бы как 15,4k .
  • Если бы у меня было много больше, это выглядело бы как 264k

Как лучше всего отобразить число в этом формате с помощью Ruby?

Ответы [ 2 ]

6 голосов
/ 03 февраля 2011

Вы можете сделать с помощью этого простого метода:

class Integer
  def pretty_str
    case
    when self < 1000
      to_s
    when self < 10000
      to_s.insert(1, ",")
    when self < 100000
      ("%.1fk" % (self / 1000.0)).sub(".0", "")
    else
      (self / 1000).pretty_str << "k"
    end
  end
end

123.pretty_str       #=> "123"
1234.pretty_str      #=> "1,234"
12345.pretty_str     #=> "12.3k"
123456.pretty_str    #=> "123k"
1234567.pretty_str   #=> "1.234k"
12345678.pretty_str  #=> "12.3kk"
2 голосов
/ 03 февраля 2011

Я только что установил ruby, и это моя первая попытка использования языка.Может быть, это очень не рубиновый

def reputation(x)
  if x >= 100000
    "%dk" % (x / 1000)
  elsif x >= 10000
    "%.1fk" % (x / 1000.0)
  elsif x >= 1000
    "%d" % (x/1000) + ",%03d" % (x%1000)
  else
    "%d" % x
  end
end

puts reputation(999)    # --> 999
puts reputation(1000)   # --> 1,000
puts reputation(1234)   # --> 1,234
puts reputation(9999)   # --> 9,999
puts reputation(10000)  # --> 10.0k
puts reputation(12345)  # --> 12,3k
puts reputation(123456) # --> 123k

РЕДАКТИРОВАТЬ: Удалено return с и добавлена ​​запятая для тысяч

...