【发布时间】:2021-01-12 08:07:58
【问题描述】:
Ruby 是否有任何 Formatter 类或方法可用于为货币等设置数字格式,或者是否有任何 gem 可以做到这一点,或者您必须自己编写吗?
【问题讨论】:
-
你有没有机会给我们提供一些例子?这个问题很广泛。
标签: ruby
Ruby 是否有任何 Formatter 类或方法可用于为货币等设置数字格式,或者是否有任何 gem 可以做到这一点,或者您必须自己编写吗?
【问题讨论】:
标签: ruby
Ruby 具有所有标准打印格式化程序,可通过 printf、sprintf 或使用 'formatstring' % [var1, ...] 获得。
>> '%.2f' % 3.14159 #=> "3.14"
>> '%4s %-4s' % ['foo', 'bar'] #=> " foo bar "
【讨论】:
试试这个:
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"
您可以使用Kernel#sprintf(或Kernel#format)并这样做。 API Link.
【讨论】:
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 "
【讨论】:
您可以查看 ruby on rails ActionView::Helpers::NumberHelper
【讨论】: