Я разрабатываю электронную торговлю, и у меня проблема, когда я хочу отформатировать число с помощью number_format ().
Мне нужно установить для моего подключения Stripe число без десятичных знаков, поэтому, когда я делаю все вычисления, чтобы получить окончательную цену моей корзины, я делаю:
$final_amount = number_format($final_amount, 2) * 100;
В результате получается число, которое понимает Stripe. У меня нет проблем с маленькими числами (например, 970,25 или 1300,75), но когда у меня есть большое количество, например 15717.72, php выдает ошибку «Обнаружено некорректное числовое значение». Не знаю, проблема ли в этом, большие цифры.
Я пытался ранее разобрать $ final_amount с помощью floatval (), и он тоже не работал.
Кто-то знает проблему? Благодарность :)
И что именно вы имеете в виду, говоря «с floatval (), и он тоже не запускался»? Что сделал бывает? Мне кажется, что это даст верный результат, поэтому вам нужно четко понимать, каким образом это было не то, что вы хотели.






проблема не в функции number_format (), а в вашем расчете. Вы умножаете строку на целое число. Это не так уж и хорошо.
$final_amount = number_format($final_amount * 100, 2);
Работает нормально.
Обновлять: Мой вывод был не совсем верным. Умножение int на строку действительно работает, если строка может быть преобразована в int или float (см. типаж в руководстве по PHP). Но строка, созданная функцией number_format (), выглядит так: «15 717,72». И поэтому не может быть приведен к числовому типу.
Пара заметок.
"Обнаружено некорректное числовое значение" - это Уведомление, а не Ошибка.
Я не верю, что 1300,75 работает на вас. Я не верю в это потому, что вы даете number_format только два параметра. Вы получили это уведомление, потому что number_format форматирует ваше число с помощью разделителя тысяч ",".
$final_amount = number_format($final_amount, 2, ".", "") * 100;
должен сделать трюк, чтобы удалить это уведомление.