Answers:
你是说sprintf '%02d', n
吗
irb(main):003:0> sprintf '%02d', 1
=> "01"
irb(main):004:0> sprintf '%02d', 10
=> "10"
您将来可能要参考格式表sprintf
,但是对于此特定示例,则'%02d'
意味着打印一个整数(d
),该整数至少包含2个字符(2
),并用零而不是空格(0
)进行左填充。
%02i
在这种情况下,您可能应该使用它,因为更明显的是,输出是并且应该是整数,对于不习惯使用的人来说,d不太直观sprintf
。
'%02d'%1
不用sprintf
很多人正在使用sprintf
(这是正确的做法),我认为如果要对字符串执行此操作,最好记住rjust
and ljust
方法:
"4".rjust(2, '0')
"4"
通过确保2
长度至少为字符并用填充,将使权利具有合理性'0'
。ljust
相反。
rjust
避免了解析sprintf的格式字符串,将字符串转换为数字并将该数字转换回字符串的开销。另外,人们可以一目了然地(很容易地)理解代码正在尝试做什么。
试试这个,它应该可以工作:
abc= 5
puts "%.2i" %abc >> 05
abc= 5.0
puts "%.2f" %abc >> 5.00