以 Stackoverflow 信誉风格显示数字

发布于 2024-10-15 18:12:25 字数 184 浏览 4 评论 0原文

我的声誉显示为 2,606

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

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

My reputation appears as 2,606.

  • If I had more, it would look like 15.4k.
  • If I had a lot more, it would look like 264k

What's the best way to display a number in this format using Ruby?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

身边 2024-10-22 18:12:25

你可以用这个简单的方法来做:

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"

You can do with this simple method:

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"
一江春梦 2024-10-22 18:12:25

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

I just installed ruby and this is my first attempt with the language. May be it's very un-rubyesque

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

EDIT: Removed returns and added comma for thousands

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文