我在ruby控制台中得到以下输出。
Integer('009') # => ArgumentError: invalid value for Integer(): "009"
但是,如果我尝试将相同的字符串转换为Float
,它会起作用。
Float('009') # => 9.0
为什么不进行Float
转换Integer
呢?
Kernel#Integer将以前导开头的参数解释0
为八进制。由于八进制数系统仅使用数字0-7
,9
因此未定义包含a的数字。从文档中:
如果arg是字符串,则省略base或等于0时,将接受基数指示符(0、0b和0x)。
另一方面,Kernel#Float则不这样。
要使用转换"009"
为以10为底的整数Integer
,您需要传递一个可选参数以指定基数:
Integer("009", 10)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句