为什么"字符串" .to_i = 0但是" 9" .to_i = 9

时间:2014-03-28 02:33:40

标签: ruby

您好我想知道为什么会这样,以及如何定义to_i。

简单的问题为什么

"string".to_i
=> 0?


"9".to_i
=> 9

2 个答案:

答案 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