我无法理解为什么会发生这种情况:
s = "000301"
"%06d" % s ====> "000193"
sprintf("%06d", s) ====> "000193"
答案 0 :(得分:5)
因为它被解释为八进制数。
在irb中尝试:
> 0301
=> 193
但是当你写:
> 301
=> 301
如果您想让它工作,请尝试使用String#to_i
将其转换为整数:
"%06d" % s.to_i
sprintf("%06d", s.to_i)