0

なぜこれが起こるのか理解できません:

s = "000301"
"%06d" % s             ====> "000193"
sprintf("%06d", s)     ====> "000193"
4

1 に答える 1

5

8進数として解釈されたからです。

irbで試してみてください:

> 0301
=> 193

しかし、あなたが書くとき:

> 301
=> 301

それを機能させたい場合は、次のように整数に変換してみてくださいString#to_i

"%06d" % s.to_i
sprintf("%06d", s.to_i)
于 2012-06-04T09:36:02.807 に答える