J'ai des problèmes d'arrondi. J'ai un flotteur, que je veux arrondir au centième d'une décimale. Cependant, je ne peux pas utiliser .round
qui transforme essentiellement en un int, ce qui signifie 2.34.round # => 2.
est-il un moyen simple effet de faire quelque chose comme 2.3465 # => 2.35
Flotteur arrondi en Ruby
Répondre
Lors de l'affichage, vous pouvez utiliser (par exemple)
>> '%.2f' % 2.3465
=> "2.35"
Si vous voulez stocker arrondi, vous pouvez utiliser
>> (2.3465*100).round/100.0
=> 2.35
grande réponse merci, je savais qu'il y avait un moyen simple de faire il. – user211662
Merci. Je ne me suis pas rendu compte que sprintf prendrait soin d'arrondir pour moi. 'sprintf '% .2f', 2.3465' fonctionne également. –
value.round (2) est meilleur que cette solution –
Qu'en est-il (2.3465*100).round()/100.0
?
Passer un argument pour arrondir contenant le nombre de décimales à arrondir
>> 2.3465.round
=> 2
>> 2.3465.round(2)
=> 2.35
>> 2.3465.round(3)
=> 2.347
Cela semblerait plus judicieux que de multiplier, arrondir et diviser. +1 –
Hmm cette méthode ne semble pas être en rubis 1.8.7. Peut-être en 1.9? –
@Brian. Ceci est certainement dans 1.9 et est également dans les rails (Avec laquelle cette question a été taguée) –
Vous pouvez ajouter une méthode dans la classe de flotteur, je l'ai appris de stackoverflow:
class Float
def precision(p)
# Make sure the precision level is actually an integer and > 0
raise ArgumentError, "#{p} is an invalid precision level. Valid ranges are integers > 0." unless p.class == Fixnum or p < 0
# Special case for 0 precision so it returns a Fixnum and thus doesn't have a trailing .0
return self.round if p == 0
# Standard case
return (self * 10**p).round.to_f/10**p
end
end
def rounding(float,precision)
return ((float * 10**precision).round.to_f)/(10**precision)
end
Pour ruby 1.8.7, vous pouvez ajouter ce qui suit à votre code:
class Float
alias oldround:round
def round(precision = nil)
if precision.nil?
return self
else
return ((self * 10**precision).oldround.to_f)/(10**precision)
end
end
end
Si vous avez juste besoin de l'afficher, j'utiliserais l'assistant number_with_precision. Si vous avez besoin d'un autre endroit, j'utiliser, comme Steve Weet a, la méthode round
Notez que 'number_with_precision' est la méthode Rails-only. – Smar
Vous pouvez également fournir un nombre négatif comme argument à la méthode round
pour arrondir au plus proche multiple de 10, 100 et ainsi de suite .
# Round to the nearest multiple of 10.
12.3453.round(-1) # Output: 10
# Round to the nearest multiple of 100.
124.3453.round(-2) # Output: 100
vous pouvez l'utiliser pour arrondir à un precison ..
//to_f is for float
salary= 2921.9121
puts salary.to_f.round(2) // to 2 decimal place
puts salary.to_f.round() // to 3 decimal place
- 1. Arrondi incohérent dans Ruby?
- 2. Régler la précision d'affichage d'un flotteur en Ruby
- 3. Ruby imprimer un flotteur avec des chiffres en option
- 4. coulée en décimal et arrondi
- 5. Arrondi de virgule flottante (en java)
- 6. flotteur Mauvais Ruby et le résultat de soustraction BigDecimal
- 7. Représentation du flotteur en C
- 8. Déclarez le flotteur ou le flotteur moulé?
- 9. Arrondir un flotteur à l'entier le plus proche de Ruby
- 10. Arrondi gaussien/banquier en JavaScript
- 11. Arrondi UIBarButtonItems
- 12. C#: Convertir tableau d'octets en un flotteur
- 13. Blocage en retrait autour du flotteur
- 14. TextCtrl -> tronquer un flotteur en Erlang
- 15. Passer le flotteur "byref" en Objective C?
- 16. Comment convertir un flotteur en fraction?
- 17. flotteur affichage align: problème en ligne
- 18. Swing JButton arrondi en utilisant Java
- 19. C# Convertir string en int (avec arrondi)
- 20. Zone de texte riche arrondi sélection de coin arrondi
- 21. flotteur java-moi J2ME
- 22. flotteur div côté div
- 23. IE6 flotteur sidepanel bug
- 24. C# flotteur boucle infinie
- 25. Javascript ajout flotteur
- 26. Flotteur: Droit IE7 Bogue
- 27. Arrondi Java Problème
- 28. contrôle de coin arrondi
- 29. BigDecimal arrondi question
- 30. Arrondi des objets DateHeure
'2.3465.round (2) => 2.35' – Magne