A Perfect Night For Bananafish

だがそれを語るには人生は短すぎる

数字を指定の桁数だけ0で埋める

数字を指定の桁数だけ0で埋める。0fill とか0 paddingっていうヤツ。
たとえば123を5桁で指定すると00123という文字列を返したい。
とりあえず先頭に0をくっつけてみる。

def zerofill(n,d)
	str=n.to_s
	return str if str.size >digit 
	while str.size < d
		str="0"+ str
	end
	return str
end

digit=5
num=123
p zerofill(num,digit)

1個ずつ0をくっつけてるので桁が増えるとすげー遅い。10万桁(digit=100000)ぐらいになると体感で差が出てくる。
倍々で0増やした方が断然お得なので
404 Blog Not Found:アルゴリズム - 同じ文字列のn回繰り返しをlog n回で作る方法
みたくシフト演算使ってやってみる。

def zerofill(n,d)
  str=n.to_s
  i=d-str.size
  return str if i < 0
  z="0"
  zeros=""
  while i > 0
    zeros +=z if (1 == i & 1)
    z+=z
    i>>=1
  end
  return zeros+str
end

digit=5
num=123
s=zerofill(num,digit)

とかやってみたけど実は素直にsprintfを使うのがラク。
(出力だけならprintfでOK。ここでは文字列オブジェクトが欲しいのでsprintfを使っている)

digit=5
num=123
p sprintf("%0#{digit}d",num)