2016-02-08 23 views
1

當我比較Go中以下不等長字符串時,比較結果不正確。有人可以幫忙嗎?在Go中比較不等長字符串

i := "1206410694" 
j := "128000000" 
fmt.Println("result is", i >= j, i, j) 

輸出是:

result is false 1206410694 128000000 

的原因可能是因爲圍棋也被燒焦比較先從最顯著炭炭。在我的情況下,這些字符串表示數字,所以我比j大。所以只是想知道是否有人可以幫助解釋如何比較不等長字符串。

+4

字符串是詞法比較。你想比較字符串中的小數嗎? – JimB

+0

是的,這就是我想要的 – sina

+0

兩個字符串的長度可以通過獲取每個字符串的長度來比較:'len(「string」)' – alexsmn

回答

4

原因可能是因爲Go按字符比較從最顯着的char開始。

這是正確的。

如果它們代表數字,那麼您應該將它們與數字進行比較。解析/他們在比較之前轉換爲int

ii, _ := strconv.Atoi(i) 
ij, _ := strconv.Atoi(j) 

編輯:是的,@JimB是完全正確的。如果您不能100%確定轉換會成功,請不要忽略這些錯誤。

+2

並且不要忘記檢查錯誤,如果你想避免意外地比較非數字爲0. – JimB

+0

此外,如果數字大到可以保存在int64中 – Danilo