Réponses:
Il fait une division entière. Vous pouvez créer l'un des nombres a Floaten ajoutant .0:
9.0 / 5 #=> 1.8
9 / 5.0 #=> 1.8
.to_fré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 / 5est très bien.
Il fait une division entière. Vous pouvez utiliser to_fpour 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#fdivméthode que vous pouvez utiliser à la place:
9.fdiv(5) #=> 1.8
Vous pouvez inclure le mathnmodule 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 5par 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; endretournerait 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.