У меня есть скрытое поле со значением. Поскольку это скрытое поле, моим значением является строка. В моей базе данных значение хранится в виде десятичного поля с точностью до 2 точек.
Просмотр
<tr class="grand-total">
<th>Total incl. 21% BTW:</th>
<?php $total = number_format($cartTotal, 2, ',', '') ?>
<td><strong class="grey-color">€{{$total}}</strong></td>
</tr>
<input type="hidden" name="total" value={{$total}}>
Контроллер
Когда моя сумма, например, составляет 10,95 евро, я получаю 10,00 евро.
Вещи, которые я пробовал:
(float)$request->total
floatval($request->total)
floatval($request->total * 1.00)
Но все они возвращают 10 евро.
2 ответа
Вы должны указать число с плавающей запятой, в котором для отделения целого числа от десятичного числа используется точка , а не запятая, поэтому вы должны ввести 10.95
вместо 10,95
.
Очевидно, вы можете использовать str_replace, если все еще хотите использовать запятые:
$myNumber = floatval(str_replace(',', '.', $myNumber));
Хотя это не дает прямого ответа на вопрос, это действительно решит его в более долгосрочной перспективе.
Рассмотрите возможность хранения денежных сумм без десятичной дроби, чтобы $10.00
фактически сохранялся как 1000
в вашей базе данных.
Вы также можете использовать встроенные функции PHP, такие как денежный формат как долго с установкой вашей местной валюты, чтобы по-настоящему решить эту проблему.
Каковы недостатки хранения денежных ценностей в виде центов / второстепенных единиц?
Похожие вопросы
Связанные вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.