Réponses:
Il fait une division entière. Vous pouvez créer l'un des nombres a Float
en ajoutant .0
:
9.0 / 5 #=> 1.8
9 / 5.0 #=> 1.8
.to_f
réponse est meilleure si vous divisez deux variables contenant des entiers, par exemple a.to_f / b
. Si vous divisez littéralement deux entiers codés en dur (ce qui est probablement étrange), l'utilisation 9.0 / 5
est très bien.
Il fait une division entière. Vous pouvez utiliser to_f
pour forcer les choses en mode virgule flottante:
9.to_f / 5 #=> 1.8
9 / 5.to_f #=> 1.8
Cela fonctionne également si vos valeurs sont des variables plutôt que des littéraux. La conversion d'une valeur en un flottant est suffisante pour contraindre l'expression entière à l'arithmétique à virgule flottante.
Il y a aussi la Numeric#fdiv
méthode que vous pouvez utiliser à la place:
9.fdiv(5) #=> 1.8
Vous pouvez inclure le mathn
module ruby .
require 'mathn'
De cette façon, vous allez pouvoir faire la division normalement.
1/2 #=> (1/2)
(1/2) ** 3 #=> (1/8)
1/3*3 #=> 1
Math.sin(1/2) #=> 0.479425538604203
De cette façon, vous obtenez la division exacte (classe Rational) jusqu'à ce que vous décidiez d'appliquer une opération qui ne peut pas être exprimée comme rationnelle, par exemple Math.sin
.
Remplacez 5
par 5.0
. Vous obtenez une division entière.
Fixnum # to_r n'est pas mentionné ici, il a été introduit depuis ruby 1.9. Il convertit Fixnum en forme rationnelle. Voici des exemples de ses utilisations. Cela peut également donner une division exacte tant que tous les nombres utilisés sont Fixnum.
a = 1.to_r #=> (1/1)
a = 10.to_r #=> (10/1)
a = a / 3 #=> (10/3)
a = a * 3 #=> (10/1)
a.to_f #=> 10.0
Exemple où un flotteur opéré sur un nombre rationnel couvre le résultat à flotter.
a = 5.to_r #=> (5/1)
a = a * 5.0 #=> 25.0
def method; a - b/8; end
retournerait simplement le résultat du calcul de la méthode, car la dernière expression dans un appel de méthode est la valeur de retour.