Here’s a tip so simple and elegant it’s amazing I ever got along without it. Consider
--> '12.34'.to_f ==> 12.34
Which works great, so long as the string is a valid number, but if not:
--> 'splat'.to_f ==> 0.0
#to_f doesn’t throw an exception with invalid input, making it dangerous to use with any user-supplied data. I’ve seen various solutions that involve regular expressions, but these are kludgy and don’t handle all proper numeric representations.
Fortunately, Ruby provides type-cast-style methods to do proper conversions with validation:
--> Float('12.34') ==> 12.34 --> Float('splat') ArgumentError: invalid value for Float(): "splat"
It might look weird, until you realize that
Float is both a class (
::Float) and a kernel method (
Kernel.Float). There are also methods for converting to an
Array, or even back to a
String (which is essentially just