Q. 2 ** 30 を 3 桁ごとにコンマ(',')で分けたいんだけど
A. つ
def comma_format(n, sepataror = ",") digits = n.to_s.split(/\./).shift.split(//).reverse i, result = 0, [] digits.each do |digit| result << digit if i % 3 == 2 then result << sepataror end i += 1 end result.reverse.join("") end
ちょっとした説明(?)
n が実数だといけないので、split(/\./).shift で整数部だけを取り出し、
それを 1 文字ずつ分けて(split(//))からひっくり返す(reverse)。
3 文字ずつの隙間にコンマをいれて、終わったらまたひっくり返してくっつける(join(""))。