Я совсем не знаком с PHP, и у меня возник вопрос.
У меня есть 2 переменные pricePerUnit
и InvoicedUnits
. Вот код, который устанавливает для них значения:
$InvoicedUnits = ((string) $InvoiceLineItem->InvoicedUnits);
$pricePerUnit = ((string) $InvoiceLineItem->PricePerUnit);
Если я выведу это, я получу правильные значения. Скажем, 5000
выставленные единицы и 1.00
по цене.
Теперь мне нужно показать общую потраченную сумму. Когда я умножаю эти два вместе, это не работает (как и ожидалось, это строки).
Но я понятия не имею, как анализировать / преобразовывать / преобразовывать переменные в PHP.
Что я должен делать?
VARCHAR>11
длиной ... еще не сузил, почему именно.Вам нужна функция, не зависящая от локали
floatval
:Пример:
источник
(float)
конвертацию на первом сервере в "," а на втором в "",Что ж, если пользователь напишет 1,00,000, тогда floatvar покажет ошибку. Так -
Это намного надежнее.
Использование :
источник
$string=preg_replace("/[^0-9\.\-]/","",$string);
Работа с разметкой с плавающей запятой - нетривиальная задача. В английской / американской нотации вы форматируете тысячу плюс
46*10-2
:Но в Германии вы бы изменили запятую и точку:
Из-за этого очень сложно угадать правильный номер в многоязычных приложениях.
Я настоятельно рекомендую использовать
Zend_Measure
Zend Framework для этой задачи. Этот компонент будет преобразовывать строку в число с плавающей запятой на языке пользователя.источник
intl
расширением.Используйте эту функцию для приведения значения с плавающей запятой из любого стиля текста:
Это решение не зависит от каких-либо настроек локали. Таким образом, для пользовательского ввода пользователи могут вводить значения с плавающей запятой любым способом. Это действительно полезно, например, когда у вас есть проект только на английском языке, но люди во всем мире используют его и могут не иметь в виду, что проекту нужна точка вместо запятой для значений с плавающей запятой. Вы можете добавить javascript в микс и получить настройки браузера по умолчанию, но все же многие люди устанавливают эти значения на английский, но все равно набирают 1,25 вместо 1,25 (особенно, но не ограничиваясь отраслью переводов, исследованиями и ИТ)
источник
У меня возникла проблема со стандартным способом сделать это:
Если действительного числа нет, синтаксический анализатор не должен возвращать число, он должен выдать ошибку. (Это условие, которое я пытаюсь уловить в своем коде, YMMV)
Чтобы исправить это, я сделал следующее:
Затем перед дальнейшей обработкой преобразования я могу проверить и вернуть ошибку, если не было действительного синтаксического анализа строки.
источник
Если вам нужно обрабатывать значения, которые нельзя преобразовать отдельно, вы можете использовать этот метод:
источник
вы можете перейти по этой ссылке, чтобы узнать больше о том, как преобразовать строку / число в число / число с плавающей запятой / десятичное число в PHP. ЗДЕСЬ, ЧТО ГОВОРИТ ЭТА ССЫЛКА ...
Метод 1: Использование функции number_format (). Функция number_format () используется для преобразования строки в число. Он возвращает отформатированное число в случае успеха, иначе выдает E_WARNING в случае неудачи.
Метод 2: Использование приведения типов: Приведение типов может напрямую преобразовать строку в тип с плавающей запятой, двойной или целочисленный примитивный тип. Это лучший способ преобразовать строку в число без какой-либо функции.
Метод 3: Использование функций intval () и floatval (). Функции intval () и floatval () также можно использовать для преобразования строки в соответствующие ей целочисленные значения и значения с плавающей запятой соответственно.
Метод 4: добавляя 0 или выполняя математические операции. Номер строки также можно преобразовать в целое число или число с плавающей запятой, добавив к строке 0. В PHP при выполнении математических операций строка неявно преобразуется в целое число или число с плавающей запятой.
источник