有办法让轨道打印出一个数字与逗号在它?
例如,如果我有一个数字540000000 .34,我可以运行<%= number。函数%>,输出“54,000,000.34”
谢谢!
有办法让轨道打印出一个数字与逗号在它?
例如,如果我有一个数字540000000 .34,我可以运行<%= number。函数%>,输出“54,000,000.34”
谢谢!
当前回答
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变成一个更高的数字
其他回答
对于javascript的人
function numberWithDelimiter(value) {
return (value+"").split("").reverse().join("").replace(/(\d{3})(?=\d)/g, '$1,').split("").reverse().join("")
}
:)
如果您经常这样做,但也仅供参考,因为上面没有暗示它,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
如果使用最典型的方式,则不需要提供分隔符值。
另一种不使用helper的解决方案:格式化2位小数,然后替换。由,
puts(("%.2f" % 2.5666).gsub('.',','))
>> 2,57
对于Ruby的人: 格式化数字(仅限整数),每一组千位之间用逗号分隔。
number = 12345678
numStr1 = number.to_s.reverse.scan(/.{1,3}/).join(',').reverse
puts numStr1 # => 12,345,678
numStr2 = number.to_s.gsub(/\B(?=(...)*\b)/, ',')
puts numStr2 # => 12,345,678
如果您希望在视图之外添加逗号,并且不想包含某些模块,则可以使用number_to_delimited方法(rails version >= 4.02)。例如:
#inside anywhere
ActiveSupport::NumberHelper.number_to_delimited(1000000) # => "1,000,000"