JRuby 1.6.x. Comment arrondissez-vous un nombre décimal en jruby?.
number = 1.1164
number.round(2)
The above shows the following error
wrong number of arguments (1 for 0)
Comment puis-je arrondir cela à 2 décimales?
Float # round peut prendre un paramètre dans Ruby 1.9, pas dans Ruby 1.8. JRuby par défaut à 1.8, mais il est capable de fonctionnant en mode 1.9 .
(5.65235534).round(2)
#=> 5.65
sprintf('%.2f', number)
est un moyen crypté, mais très puissant, de formater des nombres. Le résultat est toujours une chaîne, mais puisque vous arrondissez, je suppose que vous le faites de toute façon pour les besoins de la présentation. sprintf
peut formater n’importe quel nombre, et beaucoup plus.
Documentation complète sur sprintf: http://www.Ruby-doc.org/core-2.0.0/Kernel.html#method-i-sprintf
Après avoir reçu des commentaires, il semble que la solution initiale n'a pas fonctionné. C'est pourquoi a mis à jour la réponse parmi les suggestions.
def float_of_2_decimal(float_n)
float_n.to_d.round(2, :truncate).to_f
end
D'autres réponses peuvent fonctionner si vous souhaitez avoir des nombres arrondis à 2 décimales. Mais, si vous voulez avoir des nombres à virgule flottante avec les deux premières décimales sans arrondir, ces réponses ne vous aideront pas.
Donc, pour obtenir un nombre à virgule flottante avec les deux premières décimales, j'ai utilisé cette technique. Ne fonctionne pas dans certains cas
def float_of_2_decimal(float_n)
float_n.round(3).to_s[0..3].to_f
end
avec 5.666666666666666666666666
, il retournera 5.66
au lieu de arrondi 5.67
. J'espère que ça va aider quelqu'un