Как сохранить десятичные разряды после расчета в PHP? - PullRequest
0 голосов
/ 16 января 2019

У меня есть база данных, в которой хранится стоимость продукта как (DECIMAL) 9,2 с именем cost в виде столбца.

Я создал контроллер корзины, который отлично работает. Убедившись, что в корзине есть товары, я затем проверяю содержимое товара, вычисляя общую стоимость с указанным товаром и количеством.

$total = 0;
foreach(session('cart') as $key => $product)
    $total = $total + (\DB::table('product_list')->where('id', $key)->get()->first()->cost * $product[0]['quantity']);

Проблема, которую я получаю, заключается в том, что знак после запятой игнорируется. Если стоимость составляет 150.00, у меня есть 1 количество, тогда итоговое значение получается как 150 без двух десятичных знаков.

Я пытался использовать bcmul(), который предназначен для десятичной интеграции с математикой, но это дает мне тот же результат. Я также пытался использовать ROUND($total, 2), чтобы получить ближайшие 2 десятичных знака, если нет, то .00, но это тоже не сработало.

Можно ли обеспечить сохранение этих десятичных разрядов после использования каких-либо математических запросов или же можно сложить все затраты вместе в SQL Query Builder?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Попробуйте number_format() вот так:

echo number_format("150",2);

будет напечатано: 150.00

Рабочая скрипка ссылка

number_format

Форматирование числа с сгруппированными тысячами

0 голосов
/ 16 января 2019

Используйте printf или $s = sprintf для преобразования числа в строку:

printf("%.02f", 150.00);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...