2017-02-14 29 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” 。 –