> If I use Float("17") it returns 17.0 and Float(0x11) returns 17.0, both as > expected. Yes, because Kernel.Float knows how to convert string "17" to float and number 17 written as 0x11 to float. > Why doesn't Float("0x11") work? You answer that yourself. Unlike Kernel.Integer, Kernel.Float does not honor radix indicators (0, 0b, 0x), thus string '0x11' is invalid for that method. While '0x11'.to_f also does not know how to deal with this, it silently returns 0.0. Kernel.Float is different in that way, that it rises an exception when given string is invalid. > As Ruby doesn't appear to handle > Floats of bases other than 10 (or at least I haven't figured out how to yet) > I can see it choking on Float("0x11.34") but it shouldn't choke on > Float("0x11"). It should. Because this method does not know anything about 0x prefix the whole string is invalid to it. Kernel.Integer KNOWS how to deal with prefixes, so it handles ocatal, binary and hex representations in string format just fine. <...> Regards, Rimantas -- http://rimantas.com/