Par exemple :
9 / 5 #=> 1
mais je m'attendais 1.8
. Comment puis-je obtenir le résultat décimal (non entier) correct ? Pourquoi le système renvoie-t-il 1
du tout ?
Par exemple :
9 / 5 #=> 1
mais je m'attendais 1.8
. Comment puis-je obtenir le résultat décimal (non entier) correct ? Pourquoi le système renvoie-t-il 1
du tout ?
Il fait des divisions entières. 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 au lieu de littéraux. La conversion d'une valeur en un flottant est suffisante pour contraindre l'ensemble de l'expression à l'arithmétique à virgule flottante.
Il y a aussi le Numeric#fdiv
que vous pouvez utiliser à la place :
9.fdiv(5) #=> 1.8
Vous pouvez inclure le fichier ruby mathn
module.
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 une division exacte (classe Rational) jusqu'à ce que vous décidiez d'appliquer une opération qui ne peut pas être exprimée comme un rationnel, par exemple Math.sin
.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.