20 lines
347 B
Ruby
20 lines
347 B
Ruby
def thousands(n, sep = ',')
|
|
s = n.to_s
|
|
sign = s[0] == '-' ? '-' : ''
|
|
s = s[1..-1] if sign == '-'
|
|
|
|
int, frac = s.split('.', 2)
|
|
|
|
out = ''
|
|
count = 0
|
|
|
|
int.reverse.each_char do |c|
|
|
out << sep if count > 0 && count % 3 == 0
|
|
out << c
|
|
count += 1
|
|
end
|
|
|
|
int = out.reverse
|
|
|
|
frac ? "#{sign}#{int}.#{frac}" : "#{sign}#{int}"
|
|
end
|