2017-02-14 14 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.111111111111111E + 71», , –