私は次のように1桁の数字を2桁の数字に変換しようとしています:
9 ==> 09
5 ==> 05
12 == 12
4 ==> 04
私はif-elseステートメントをたくさん置くことができると考えています(数が10未満の場合はgsubを実行します)が、それは恐ろしいコーディングであると考えています。 Railsにはnumber_with_precisionがありますが、10進数にのみ適用されることがわかります。1桁を2桁に変換する方法についてのアイデアはありますか?
もしかして sprintf '%02d', n
?
irb(main):003:0> sprintf '%02d', 1
=> "01"
irb(main):004:0> sprintf '%02d', 10
=> "10"
将来的には sprintf
のフォーマットテーブル を参照したいかもしれませんが、この特定の例では'%02d'
は、少なくとも2文字を占める整数(d
)を出力することを意味します(2
)およびスペースの代わりにゼロを使用した左詰め(0
)。
多くの人がsprintf
(これは正しいことです)を使用しています。これを行うには、文字列の場合rjust
およびljust
メソッド:
"4".rjust(2, '0')
これにより、少なくとも"4"
文字の長さを確保し、2
で埋めることにより、'0'
を右揃えにします。 ljust
は逆のことを行います。
これを試してください、それは動作するはずです:
abc= 5
puts "%.2i" %abc >> 05
abc= 5.0
puts "%.2f" %abc >> 5.00
ここで説明されているように、 https://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html では、ライブラリメソッドを使用できます。
number_with_precision(123, precision: 2) // 123.00