0

因此,如果这"%05d" % 123返回#=> "00123",我也希望"%05d" % 0123返回#=> "00123",但它会返回#=> "00083"。为什么会这样?

4

1 回答 1

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"
于 2012-12-05T21:17:00.427 回答