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(这是正确的做法),我认为如果要对字符串执行此操作,最好记住rjustand 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