.to_f
ist der richtige Weg.
Beispiel:
irb(main):001:0> "-10".to_f
=> -10.0
irb(main):002:0> "-10.33".to_f
=> -10.33
Vielleicht Zeichenfolge enthält keine regelmäßigen "-" (Bindestrich)? Oder gibt es einen Abstand zwischen dem Strich und der ersten Zahl?
Hinzugefügt:
Wenn Sie wissen, dass Ihr Eingabestring eine String-Version von einer schwimmenden Zahl, zB „10.2“, dann ist .to_f der beste/einfachste Weg, um die Konvertierung zu tun.
Wenn Sie die Zeichenfolge des Inhalts nicht sicher sind, dann .to_f
verwendet, wird 0 in dem Fall geben, wo Sie in der Zeichenfolge keine Zahlen nicht haben. Je nach Eingabestring gibt es verschiedene andere Werte. ZB
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
Das obige .to_f
Verhalten nur sein kann, was Sie wollen, hängt es von Ihrem Problemfall.
Je nachdem, was Sie in verschiedenen Fehlerfällen tun möchten, können Sie Kernel::Float
verwenden, wie Mark Ruschakoff vorschlägt, da es einen Fehler auslöst, wenn es mit der Konvertierung der Eingabezeichenfolge nicht vollkommen zufrieden ist.
Speichern Sie das Ergebnis in einem int statt in einem Float? – Shaji