45 votes

Ruby a-t-il des classes de formatage des nombres ?

Est-ce que Ruby possède des classes ou des méthodes de formatage qui peuvent être utilisées pour formater des nombres pour des choses comme la monnaie, etc., ou existe-t-il des joyaux qui font cela, ou faut-il écrire les siens ?

0 votes

Pourriez-vous nous donner des exemples ? La question est assez vaste.

80voto

the Tin Man Points 69148

Ruby dispose de tous les formateurs d'impression standard, disponibles via printf, sprintf ou à l'aide de 'formatstring' % [var1, ...] .

>> '%.2f' % 3.14159 #=> "3.14"
>> '%4s %-4s' % ['foo', 'bar'] #=> " foo bar "

12voto

ynkr Points 2493

Essayez ceci :

1234567890.123.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse
=> "1,234,567,890.123"

Tiré d'un commentaire de @pguardiario dans un article de fil similaire

2 votes

Un peu cassé. 1234567890.1234.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse => "1,234,567,890.1,234"

7voto

Reese Moore Points 6213

Vous pouvez utiliser Kernel#sprintf (ou Kernel#format ) et le faire de cette manière. Lien API .

2voto

EMMANUEL OKELLO Points 15

Ruby fournit Kernel#format qui ressemble davantage à la méthode de python 3.x. Vérifier Docs de Ruby pour plus de détails. Il peut être utilisé pour formater à la fois des chaînes de caractères et des nombres. %e y %g pour l'exponentiel, etc.

Voici quelques exemples.

nombre utiliser %f para flotteur y %d para entier

format('%.2f', 2.0) #=> "2.00"

format('%.d', 2.0) #=> "2"

chaîne de caractères utiliser %s

format('%.4s', "hello") #=> "hell"

format('%6s', "hello") #=> " hello"

format('%-6s', "hello") #=> "hello "

0voto

Toby Points 887

Vous pouvez consulter le site ruby on rails ActionView::Helpers::NumberHelper

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