2016-01-30 2 views
0

Я импортирую цену из базы данных. Цена первоначально содержит 2 знака после запятой.Результат вывода содержит 2 знака после запятой

С каждой ценовой стоимостью я хочу вычесть соответствующее значение доставки и сохранить результат с 2 десятичными знаками.

Код:

while($row = $result->fetch_assoc()) { 

    $product_name = $row['Name']; 

    $keys = array_keys($item_array, $product_name); 
    foreach ($keys as $x) 

    $product[$x]["total_price"] = $row['price']; 
    $product[$x]["shipping"] = $row['shipping']; 
    $product[$x]["base_price"] = ($row['price']-$row['shipping']); // Calculation 

В настоящее время, я не знаю, как это работает, но когда:

$product[1]["price"] = 99.90

И соответствующая перевозка груза, что я вычитая это 0, Результат 99.9 вместо 99.90.

Какова наилучшая практика сохранения двух десятичных точек?

+0

'99,9 - 99,90 = 0' –

+0

@Lashane что ..? – rockyraw

ответ

2

99.90 - отформатированный выход 99.9. Чтобы получить постоянный формат чисел, вы должны выводить его через-number_format таким образом:

echo number_format ($product[1]["price"], 2); 

аргумент 2 это число знаков после запятой для печати.

Пожалуйста, обратите внимание: результатом этой функции является строка , не число; функция предназначена для печати вывода, а не для математики.

В официальном PHP Documentation вы можете увидеть, как установить другие параметры, такие как разделитель для десятичной точки и разделитель тысяч.

+0

Но как я могу форматировать '$ product [$ x] [" base_price "]' для форматирования заранее, чтобы в каждом экземпляре, что я его эхо, он будет отформатирован сразу? – rockyraw

+1

Да, если вы не проводите расчеты с ним. Итак, вы можете сделать '$ product [1] [" price "] = number_format ($ product [1] [" price "], 2)' – fusion3k

+0

money_format или NumberFormatter :: formatCurrency может быть лучше – rjdown

1

Вы можете всегда использовать sprintf() для форматирования чисел & строк.

в вашем случае вы можете сделать

$product[$x]["base_price"] = sprintf("%.2f",($row['price']-$row['shipping']));

+0

будет ли это автоматически печатать? поскольку на этом этапе я не хочу ничего печатать, просто чтобы создать новую переменную '$ product [$ x] [" base_price "]' для каждой строки в базе данных. – rockyraw

+0

нет, он не печатает переменную. – Gal

+0

Обратите внимание, что в db он может остаться без 0, так как ваш движок db может его игнорировать, но на выходе вы можете добавить эту строку – Gal

Смежные вопросы