129 votes

Ruby on Rails: Comment ajouter ajouter des zéros devant un nombre si c'est moins de 10?

Je suis à la recherche pour convertir un seul chiffre à deux chiffres des numéros comme suit:

9 ==> 09
5 ==> 05
12 == 12
4 ==> 04

Je me dis que je pourrais mettre un tas de if-else (si le nombre est inférieur à 10, puis faire un gsub) mais la figure qui est horrible de codage. Je sais Rails a number_with_precision mais je vois qu'il s'applique uniquement pour les nombres décimaux. Toutes les idées sur la façon de convertir un chiffre à deux chiffres?

214voto

Ryan Bigg Points 64561

Beaucoup de personnes utilisant sprintf (ce qui est la bonne chose à faire), et je pense que si vous voulez faire cela pour une chaîne de caractères , il est préférable de garder à l'esprit l' rjust et ljust méthodes:

"4".rjust(2, '0')

Cela va rendre l' "4" justifié à droite en s'assurant qu'il est au moins 2 caractères de long et pavé de il avec '0'. ljust fait le contraire.

157voto

Mark Rushakoff Points 97350

Vouliez-vous dire" sprintf '%02d', n?

irb(main):003:0> sprintf '%02d', 1
=> "01"
irb(main):004:0> sprintf '%02d', 10
=> "10"

Vous pourriez vouloir de référence le format de la table pour sprintf dans le futur, mais pour cet exemple particulier, '%02d' moyen d'imprimer un nombre (d) de prendre au moins 2 caractères (2) et à gauche de remplissage avec des zéros à la place des espaces (0).

35voto

ax. Points 22269

12voto

Salil Points 20300

Essayez ceci, cela devrait fonctionner:

abc= 5
puts "%.2i" %abc   >> 05


abc= 5.0
puts "%.2f" %abc   >> 5.00

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X