因此,如果此"%05d" % 123
返回#=> "00123"
,我希望"%05d" % 0123
也返回#=> "00123"
,而是返回#=> "00083"
。为什么会这样?
答案 0 :(得分:7)
以0开头的数字被解释为八进制,就像以0x开头的数字被解释为十六进制一样。 83以八进制表示为123。
irb(main):001:0> 0123
=> 83
irb(main):002:0> 1*8**2 + 2*8**1 + 3*8**0
=> 83
irb(main):003:0> "%05d" % 0x7b
=> "00123"