2017-02-14 54 views
3

我想弄清楚strlen()如何找到一個數字的長度。當我嘗試以下方法:strlen如何處理數字?

echo strlen(00000000000000000000000000000000); 

它輸出1但是當我嘗試

echo strlen(11111111111111111111111111111111111111111111111111111111); 

它輸出19。有時它確實在這個例子中正常工作,如:

echo strlen(19); 

strlen()輸出2。我知道我可以使用以下命令:

echo strlen('00000000000000000000000000000000'); 

,它將輸出32但我想弄清楚它是如何工作用數字。

+3

在基礎數學你學000000 = 0,但111111 = 1因此這樣..你可以強制它'的strlen((串)000000000000000000000000);!' –

+1

很好,但'111111111111111111111111111111111111111111111111111111111111111111111111'不等於19 –

+1

長度爲19 –

回答

1
的文檔

嘗試echo 11111111111111111111它會回顯1.1111111111111E+19這是19個字符,這就是爲什麼長度爲19但是如果你嘗試echo 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111它將輸出1.1111111111111E + 100如果你試圖獲得它的長度將是20個字符

1

因爲strlen()給人的字符串長度.. 00000000000000000000000000不是一個字符串,直到它被寫成像「00000000000000000000000000」或「00000000000000000000000000語錄..

那麼爲什麼strlen(00000000000000000000000000000000)給輸出1和strlen(11111111111111111111111111111111111111111111111111111111)給19?

由於整數00000000000000000000000000000000 = 0 ..這意味着長度爲1。鑑於11111111111111111111111111111111111111111111111111111111不等於1,但11111111111111111111111111111111111111111111111111111111.因此它輸出32

更多你可以檢查的strlen()

+3

應該注意的是,1s的長度爲19,因爲它太大而不適合int,所以它被評估爲float,然後轉換爲字符串「1.1111111111111E + 71」 。 –