Définit la précision d’affichage d’un flottant dans Ruby

Est-il possible de définir la précision d’affichage d’un flottant dans Ruby?

Quelque chose comme:

z = 1/3 z.to_s #=> 0.33333333333333 z.to_s(3) #=> 0.333 z.to_s(5) #=> 0.33333 

Ou dois-je remplacer la méthode to_s de Float ?

z.round(2) ou x.round(3) est la solution la plus simple. Voir http://www.ruby-doc.org/core-1.9.3/Float.html#method-i-round .

Cela dit, cela ne fera que garantir que ce ne soit que de nombreux chiffres. Dans le cas de 1/3, c’est bien, mais si vous aviez dit 0.25.round(3) vous obtiendrez 0.25, pas 0.250.

Vous pouvez utiliser sprintf:

 sprintf( "%0.02f", 123.4564564) 

Je ferais normalement la conversion en code ouvert, quelque chose comme:

 puts "%5.2f" % [1.0/3.0] 

Ruby appelle le format Kernel # pour des expressions comme celle-ci, car un opérateur de base% défini sur Ssortingng est défini sur Ssortingng. Pensez-y comme printf pour Ruby si cela vous dit quelque chose.

Vous pouvez utiliser des mises

 z = #{'%.3f' % z}