Hi Thomas, hi Rubyists Thomas Fini Hansen wrote: > --- > irb(main):001:0> VERSION > "1.6.7" > irb(main):002:0> "nan".to_f > NaN > --- > irb(main):001:0> VERSION > => "1.8.2" > irb(main):002:0> "nan".to_f > => 0.0 > --- > > (1.8.2 is really 1.8.1+1.8.2pre2-1woody1 in Debian) > > I wouldn't have been surprised if it was the other way round. Can > anyone explain why it is so? Seemed like a nice feature to me. > >ri String#to_f ------------------------------------------------------------ String#to_f str.to_f => float ------------------------------------------------------------------------ Returns the result of interpreting leading characters in _str_ as a floating point number. Extraneous characters past the end of a valid number are ignored. If there is not a valid number at the start of _str_, +0.0+ is returned. This method never raises an exception. "123.45e1".to_f #=> 1234.5 "45.67 degrees".to_f #=> 45.67 "thx1138".to_f #=> 0.0 I don't use String#to_f a lot, because I'd prefer Float( a_string ). Float() is stricter and raises an ArgumentError if the whole String can't be interpreted as a Float, while String#to_s tries to create a Float from the first characters and stops when/if there are any chars that wouldn't yield a Float. Happy rubying Stephan