以Stackoverflow信誉的样式显示数字

时间:2011-02-02 21:01:50

标签: ruby formatting numbers

我的声誉显示为 2,606

  • 如果我有更多,它会看起来像 15.4k
  • 如果我很多更多,它会看起来像 264k

使用Ruby以这种格式显示数字的最佳方法是什么?

2 个答案:

答案 0 :(得分:6)

您可以使用这种简单的方法:

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"

答案 1 :(得分:2)

我刚刚安装了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并添加了数千个逗号