【问题标题】:Does Ruby have any number formatting classes?Ruby 是否有任何数字格式化类?
【发布时间】:2021-01-12 08:07:58
【问题描述】:

Ruby 是否有任何 Formatter 类或方法可用于为货币等设置数字格式,或者是否有任何 gem 可以做到这一点,或者您必须自己编写吗?

【问题讨论】:

  • 你有没有机会给我们提供一些例子?这个问题很广泛。

标签: ruby


【解决方案1】:

Ruby 具有所有标准打印格式化程序,可通过 printf、sprintf 或使用 'formatstring' % [var1, ...] 获得。

>> '%.2f' % 3.14159 #=> "3.14"
>> '%4s %-4s' % ['foo', 'bar'] #=> " foo bar "

【讨论】:

    【解决方案2】:

    试试这个:

    1234567890.123.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse
    => "1,234,567,890.123"
    

    取自@pguardiario 在similar thread 中的评论

    【讨论】:

    • 有点破。 1234567890.1234.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse => "1,234,567,890.1,234"
    【解决方案3】:

    您可以使用Kernel#sprintf(或Kernel#format)并这样做。 API Link.

    【讨论】:

      【解决方案4】:

      Ruby 提供Kernel#format 类方法,看起来更像python 3.x 方法。结帐Ruby's Docs 了解更多详情。 这可用于格式化字符串和数字。还有其他类似 %e 和 %g 用于指数等。

      以下是一些示例。

      数字 使用 %f 表示 float 和 %d 表示 integer

      format('%.2f', 2.0) #=> "2.00"

      format('%.d', 2.0) #=> "2"

      字符串使用%s

      format('%.4s', "hello") #=> "hell"

      format('%6s', "hello") #=> " hello"

      format('%-6s', "hello") #=> "hello "

      【讨论】:

        【解决方案5】:

        您可以查看 ruby​​ on rails ActionView::Helpers::NumberHelper

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-12-04
          • 2012-07-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-28
          相关资源
          最近更新 更多