以Stackoverflow信誉的样式显示数字

Tom*_*man 1 ruby formatting numbers

我的声誉显示为2,606.

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

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

Gui*_*nal 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"
Run Code Online (Sandbox Code Playgroud)