Я пытаюсь сделать расчет со следующими значениями:
изменение: НДС за продукт
Когда я пытаюсь получить общее количество, я получаю 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,',','.'));
Затем общее value = 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
Все три founctions (number_format
, round
, sprintf
) будут округлять результат, чтобы избежать округления и отбросить десятичную часть после двух десятичных знаков, вы можете использовать последний пример.
Ваша начальная сумма составляет 15,004, поэтому, когда вы вызываете number_format
который округляется до 15,00. Теперь, когда вы умножаетесь на 2, ваша общая сумма составляет 15.008
а number_format
15.008
до 15,01. Проблема заключается не в добавлении, а к умножению на 2. number_format
раунды до ближайшего места, которое для вашего дела будет 30.01.
Если вы хотите, чтобы число было округлено, все время используйте floor
, например:
$total = floor(($product * 200)) / 100 + $vat;
echo(number_format($total,2,',','.'));