Est-il possible de régler la précision d'affichage d'un float en 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 le nombre de chiffres est limité. Dans le cas d'un tiers, 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 juste la conversion en code ouvert, quelque chose comme:
puts "%5.2f" % [1.0/3.0]
Ruby appelle Kernel # format pour des expressions comme celle-ci, car String comporte un opérateur core% défini . Pensez-y comme printf pour Ruby si cela vous dit quelque chose.
Vous pouvez utiliser des options
z = #{'%.3f' % z}