.to_f
es la manera correcta.
Ejemplo:
irb(main):001:0> "-10".to_f
=> -10.0
irb(main):002:0> "-10.33".to_f
=> -10.33
Tal vez su cadena no incluye un habitual "-" (guión)? ¿O hay un espacio entre el tablero y el primer número?
Agregado:
Si sabe que su cadena de entrada es una versión de cadena de un número flotante, por ejemplo, "10.2", entonces .to_f es la mejor manera de/simple de hacer la conversión.
Si no está seguro del contenido de la cadena, usar .to_f
dará 0 en el caso en que no tenga ningún número en la cadena. Le dará varios otros valores dependiendo de su cadena de entrada también. Por ejemplo
irb(main):001:0> "".to_f
=> 0.0
irb(main):002:0> "hi!".to_f
=> 0.0
irb(main):003:0> "4 you!".to_f
=> 4.0
El .to_f
comportamiento anterior puede ser justo lo que quiere, que depende de su caso problema.
Según lo que desee hacer en varios casos de error, puede usar Kernel::Float
como sugiere Mark Rushakoff, ya que genera un error cuando no está completamente satisfecho con la conversión de la cadena de entrada.
¿Está almacenando el resultado en un int en lugar de un float? – Shaji