Respuestas:
Está haciendo división entera. Puede hacer uno de los números a Float
sumando .0
:
9.0 / 5 #=> 1.8
9 / 5.0 #=> 1.8
.to_f
respuesta es mejor si está dividiendo dos variables que contienen enteros, por ejemplo a.to_f / b
. Si literalmente está dividiendo dos enteros codificados (lo que probablemente sea extraño), entonces usar 9.0 / 5
está bien.
Está haciendo división entera. Puede usar to_f
para forzar cosas al modo de punto flotante:
9.to_f / 5 #=> 1.8
9 / 5.to_f #=> 1.8
Esto también funciona si sus valores son variables en lugar de literales. Convertir un valor en un flotante es suficiente para obligar a la expresión completa a la aritmética de coma flotante.
También existe el Numeric#fdiv
método que puede utilizar en su lugar:
9.fdiv(5) #=> 1.8
Puede incluir el mathn
módulo ruby .
require 'mathn'
De esta manera, podrás hacer la división normalmente.
1/2 #=> (1/2)
(1/2) ** 3 #=> (1/8)
1/3*3 #=> 1
Math.sin(1/2) #=> 0.479425538604203
De esta manera, obtienes una división exacta (clase Racional) hasta que decides aplicar una operación que no puede expresarse como racional, por ejemplo Math.sin
.
Cambiar el 5
a 5.0
. Estás obteniendo división entera.
El Fixnum # to_r no se menciona aquí, se introdujo desde ruby 1.9. Convierte Fixnum en forma racional. A continuación se presentan ejemplos de sus usos. Esto también puede dar una división exacta siempre que todos los números utilizados sean 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
Ejemplo donde un flotador operado en un número racional convierte el resultado en flotador.
a = 5.to_r #=> (5/1)
a = a * 5.0 #=> 25.0
def method; a - b/8; end
devolvería el resultado del cálculo del método, ya que la última expresión en una llamada al método es el valor de retorno.