def modulo_3?(number) # (number % 3).zero? number.modulo(3).zero? # i guess this is more idiomatic Ruby, though I like the previous better end def commify(number) reversed = number.to_s.reverse number_size = number.to_s.size result = "" number_size.times do |i| result << reversed[i] result << "," if modulo_3?(i + 1) end result.reverse end # > commify(25164150) # => "25,164,150" # > commify(1234567890) # => "1,234,567,890"