Bug #11736
Updated by ko1 (Koichi Sasada) almost 10 years ago
Float(arg) → float 
 Returns arg converted to a float. Numeric types are converted directly, the rest are converted using arg.to_f. Converting nil generates a TypeError. 
 Strings are NOT converted using arg.to_f 
 ~~~ 
 '123_INVALID'.to_f  
 # => 123.0 
 ~~~ 
 ~~~ 
 Float('123_INVALID')  
 # => ArgumentError 
 ~~~ 
 This could be fixed by changing object.c like so:  
  
 ~~~ 
 -         return DBL2NUM(rb_str_to_dbl(val, TRUE)); 
 +         return DBL2NUM(rb_str_to_dbl(val, FALSE)); 
 ~~~ 
 But it appears that this is desired behavior as there are many specs to ensure this strict validity checking. Please update the documentation to reflect this. 
 Thanks, 
 Brian