你好,我想知道爲什麼會出現這種情況,以及如何定義to_i。爲什麼「string」.to_i = 0,但是「9」.to_i = 9
簡單的問題,爲什麼
"string".to_i
=> 0?
"9".to_i
=> 9
你好,我想知道爲什麼會出現這種情況,以及如何定義to_i。爲什麼「string」.to_i = 0,但是「9」.to_i = 9
簡單的問題,爲什麼
"string".to_i
=> 0?
"9".to_i
=> 9
據the documentation for to_i
,「如果沒有一個有效的一些在str
開始,則返回0」。
對字符串調用.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
可能值得注意的是'nil.to_i '是'0',所以''pancakes'.to_i.nil?'會有點不一致。擁有'nil.to_i == 0'是各種方便的,'s'.to_i'的唯一明智的選擇是'0','nil'或者一個異常。 –
@ muistooshort,我有興趣閱讀你的評論,因爲我一直在煎餅問題上花了很長時間。 –
OMG導致 「9.1」 .to_i == 9 「9.1」 .to_f == 9.1 「9 1」 .to_f == 9.0 「9100」 .to_i == 9 我想我會首選零。爲什麼0比零更方便? –