有办法让轨道打印出一个数字与逗号在它?

例如,如果我有一个数字540000000 .34,我可以运行<%= number。函数%>,输出“54,000,000.34”

谢谢!


当前回答

另一种不使用helper的解决方案:格式化2位小数,然后替换。由,

puts(("%.2f" % 2.5666).gsub('.',','))
>> 2,57

其他回答

不管有没有Rails,实现这一点的直接方法是:

require 'active_support'
require 'active_support/core_ext/numeric/conversions'

12345.to_s(:delimited)      # => "12,345"
12345.6789.to_s(:delimited) # => "12,345.6789"

有关更多选项,请参阅活动支持核心扩展-数字-格式。

如果您经常这样做,但也仅供参考,因为上面没有暗示它,Rails为number_with_delimiter方法提供了合理的默认值。

#inside controller or view
number_with_delimiter(2444323.4)
#=> 2,444,323.30

#inside console
helper.number_with_delimiter(233423)
#=> 233,423

如果使用最典型的方式,则不需要提供分隔符值。

  def add_commas(numstring)
    correct_idxs = (1..100).to_a.select{|n| n % 6 == 0}.map{|n| n - 1}
     numstring.reverse.chars.join(",").chars.select.with_index{|x, i| i.even? || correct_idxs.include?(i)}.join.reverse
  end

这就是我的红宝石之路

除了编辑: 基本上,它在数字之间添加所有逗号,只选择索引为+ 1% 6的数字

我认为逗号到100是可以的,但如果你想要一个超长的数字,就把100变成一个更高的数字

新语法

number_with_delimiter(@number, delimiter: ",")

如果你想用delimeter赚钱,你可以这么做

number_to_currency(@number)

这也会增加$。如果你使用金钱宝石,那么你可以这样做

Money.new(@number,"USD").format

这也会把$。

number_with_delimiter

ruby的钱

number_to_currency

下面的代码可以同时用于分隔符和精度(API ref)。

ActiveSupport::NumberHelper.number_to_rounded(1234.532, delimiter: ',', precision: 1) 
     

(或者从视图中只使用number_to_rount_round,不需要前缀)

HTH