форматирование чисел — неправильно отображается PHP number_format

Новое в программировании и прохождение курса PHP. Я написал очень маленькую программу для проверки функции number_format. Вот мой код:

$num = 9876543210123456789;
$result = number_format($num);
echo = $result;

Результат: 9,876,543,210,123,456,512

Я уверен, что это как-то связано с длиной $ num. Но не смогли найти точное объяснение / причину, по которой это происходит.

0

Решение

Вы видите другое число, потому что предоставленное вами число достаточно велико, чтобы вызвать переполнение в вашей системе. Попробуйте с меньшим числом

<?php
$num = 9876543210123;
$result = number_format($num);
echo  $result;                    // will show as expected, with formatting

Даже если вы не используете number_format на этом номере ваш номер все равно вызовет переполнение. Попробуй это

$num = 9876543210123456789;
echo  $num;   // not what you see above

Также см:

Какой максимальный размер для int в PHP?

Целочисленные значения PHP и переполнение

2

Другие решения

Вы не можете передать большие числа number_format() функция. Если вам просто нужно отформатировать число, вы можете написать свою собственную функцию для разделения чисел с запятой, принимая 3 на 3.

Причина в том, что если вы проверите руководство, числовой формат принимает первый параметр как число с плавающей запятой. Вы должны иметь хорошее понимание о float, а также ints чтобы понять, почему это происходит.

Вот что-то интересное, что я нашел в SO, это то же самое, что и ваш вопрос, и на него есть хороший ответ. Пожалуйста, проверь это.

Почему мое числовое значение изменяется с помощью number_format ()?

1

По вопросам рекламы [email protected]