Я пытаюсь сделать расчет со следующими значениями:
редактировать: НДС за продукт
Когда я пытаюсь получить общую сумму, тогда я получаю 15,00 (общая сумма)
Я сделал следующее:
$total = $product + $vat
Это будет эхо 15.004
Тогда я использую number_format:
echo(number_format($total,2,',','.'));
Это напечатает 15.00
Но тогда я хочу умножить произведение на 2
Так что это даст следующий расчет:
$total = $product * 2 + $vat
Затем снова я использую формат:
echo(number_format($total,2,',','.'));
Тогда общая сумма = 30,01
Я пробовал несколько таких вещей, как ROUND en INT, но безуспешно.
Что я делаю не так в этом? Я знаю, что НДС здесь злой, но я не знаю, как это исправить.
$tax = round( ($price / 100) * 3.8, 2);
налог округляется цена делится на 100, чтобы сделать четкий процент. Умножается на требуемый стек
затем вы делаете дополнение к или из вашей таблицы цен.
Хорошо, что вы разговариваете по телефону — может быть, мы сможем решить это быстрее по телефону. Слава богу за телефоны!
Ура, приятель!
Вот несколько примеров того, как числа округляются с помощью функций PHP.
$product = 12.40;
$vat = 2.644;
$total = ( $product + $vat ) * 2;
var_dump( $total ); // float(30.088)
var_dump( number_format($total,2,',','.') ); // string(5) "30,09", rounded
var_dump( round( $total, 2 ) ); // float(30.09), rounded
var_dump( sprintf('%0.2f', $total ) ); // string(5) "30.09", rounded
var_dump( floor( $total * 100 ) / 100 ); // float(30.08), not rounded
Все три основания ( number_format
, round
, sprintf
) округлит результат, чтобы избежать округления и отбросить десятичную часть после двух десятичных знаков, которые вы можете использовать в последнем примере.
Ваш начальный итог 15,004, поэтому, когда вы звоните number_format
округляется до 15.00. Теперь, когда вы умножаете на 2, ваш итог 15.008
который number_format
будет округлять до 15.01. Проблема не в сложении, а в умножении на 2. number_format
раунды до ближайшего места, которое для вашего случая будет 30.01.
Если вы хотите, чтобы число постоянно округлялось, используйте floor
, вот так:
$total = floor(($product * 200)) / 100 + $vat;
echo(number_format($total,2,',','.'));