Ошибка числового формата с большими числами в php - PullRequest
0 голосов
/ 16 ноября 2018

Я занимаюсь разработкой электронной коммерции, и у меня возникает проблема, когда я хочу отформатировать число с помощью number_format ().

Я должен установить для моего соединения Stripe число без десятичных знаков, поэтому, когда я делаю все расчеты, чтобы получить окончательную цену моей корзины покупок, я делаю:

$final_amount = number_format($final_amount, 2) * 100;

Результат - число, которое понимает Stripe. У меня нет проблем с маленькими числами (например, 970.25 или 1300.75), но когда у меня большое количество, например 15717.72, php выдает ошибку «Обнаружено некорректное числовое значение». Я не знаю, в этом ли проблема, большие цифры.

Я пытался проанализировать ранее $ final_amount с помощью floatval (), и он тоже не запустился.

Кто-то знает проблему? спасибо:)

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Пара заметок.

«Обнаружено неверно сформированное числовое значение» - это Уведомление , а не Ошибка .

Я не верю 1300.75 работает для вас.Причина, по которой я не верю, в том, что вы даете number_format два параметра.Вы получаете это уведомление, потому что number_format форматирует ваш номер с разделителем тысяч ",".

$final_amount = number_format($final_amount, 2, ".", "") * 100;

должен решить, чтобы удалить это уведомление.

0 голосов
/ 16 ноября 2018

проблема не в функции number_format (), а в ваших расчетах. Вы умножаете строку на целое число. Это не очень хорошо получается.

$final_amount = number_format($final_amount * 100, 2);

Работает просто отлично.

Обновление: Мой вывод был не совсем верным. Умножение int на строку работает, если строка может быть преобразована в int или float (см. type juggling в руководстве по PHP). Но строка, созданная number_format (), выглядит так: «15 717,72». И поэтому не может быть приведен к числовому типу.

...