Ошибка numberformat с большими числами в php

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

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

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

В результате получается число, которое понимает Stripe. У меня нет проблем с маленькими числами (например, 970,25 или 1300,75), но когда у меня есть большое количество, например 15717.72, php выдает ошибку «Обнаружено некорректное числовое значение». Не знаю, проблема ли в этом, большие цифры.

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

Кто-то знает проблему? Благодарность :)

number_format () по умолчанию возвращает строку с сгруппированными через запятую тысячами.
Patrick Q 16.11.2018 16:28

И что именно вы имеете в виду, говоря «с floatval (), и он тоже не запускался»? Что сделал бывает? Мне кажется, что это даст верный результат, поэтому вам нужно четко понимать, каким образом это было не то, что вы хотели.

Patrick Q 16.11.2018 16:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
306
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

проблема не в функции 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;

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

Другие вопросы по теме