您好我想知道为什么会这样,以及如何定义to_i。
简单的问题为什么
"string".to_i
=> 0?
"9".to_i
=> 9
答案 0 :(得分:5)
根据the documentation for to_i
,"如果在str
开头没有有效的数字,则返回0"。
答案 1 :(得分:3)
在字符串上调用.to_i
将通过解释字符串开头的有效数字来返回一个数字(在基数10中)。
"string".to_i
返回0
,因为.to_i
无法从字符串的开头解释有效数字。 "9".to_i
返回9
,因为前导(或在这种情况下,唯一)字符是" 9"它可以解释为有效数字。
这并不意味着在以字母开头的字符串上调用.to_i
将始终返回0
。例如,"b6".to_i(16)
会返回182
,因为这意味着您要解释" b6" (在基数16,也称为十六进制)作为基数10。
请参阅此处的文档:http://www.ruby-doc.org/core-2.1.0/String.html#method-i-to_i