回答:
もしかして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
、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