なぜこれが起こるのか理解できません:
s = "000301"
"%06d" % s ====> "000193"
sprintf("%06d", s) ====> "000193"
なぜこれが起こるのか理解できません:
s = "000301"
"%06d" % s ====> "000193"
sprintf("%06d", s) ====> "000193"
8進数として解釈されたからです。
irbで試してみてください:
> 0301
=> 193
しかし、あなたが書くとき:
> 301
=> 301
それを機能させたい場合は、次のように整数に変換してみてくださいString#to_i
。
"%06d" % s.to_i
sprintf("%06d", s.to_i)