#php
#php
Вопрос:
Пытаюсь управлять ценами на продукты в моей базе данных, но возникли «проблемы с округлением».
Мой пользователь вводит «цену продукта», включая НДС. Пользователь вводит «100,00» в поле,
И я сохраняю его в базе данных без учета НДС. (НДС 18%) 100/1.18 = 84 7457. (Моя база данных имеет 2 десятичных знака)
Есть 2 варианта для выполнения расчета:
- Округлите в меньшую сторону, и результат будет 84,74.
- Округлите, и результат будет 84,75.
После того, как я сделаю запись в базу данных, я должен показать цену продукта на интерфейсе, включая НДС.
Если мое значение в базе данных становится 84,74, я должен показать его как; 84,74 * 1,18 = 99,9932, и результат будет: 99,99.
Если мое значение в базе данных равно 84,74, результат будет 84,75 * 1,18 = 100,005 (и округлит его до 100,01)
Поэтому я не смог решить эту проблему с округлением. Каков наилучший способ?
Если я использую стандарт «округления» везде, то я буду вычислять неправильно. Если я везде использую стандарт «округления в меньшую сторону», это будет неправильно.
Я попробовал методы «без десятичных, только целочисленных», но результат не изменился. Та же проблема продолжается: какой стандарт я должен использовать.
Комментарии:
1. Что делать, если вы храните 2 цены: с НДС и без него.
2. Я думаю, это может вызвать некоторые проблемы с бухгалтером из-за округления.
3. «Это может вызвать некоторые проблемы с бухгалтером» — как? Вам все равно нужно что-то хранить. Тем не менее, это больше не похоже на техническую проблему: если это вызывает проблемы с бухгалтерией — спросите своего бухгалтера, как с этим справиться.
Ответ №1:
Вы могли бы хранить больше десятичных дробей, это, я думаю, сработает. Кроме того, вы должны / могли бы сохранить значение НДС в базе данных и вместо пересчета в процентах просто добавить значение НДС к сохраненной цене, чтобы получить 100?
Потому что таким образом у вас есть 84,75 15,25 = 100
Ответ №2:
В качестве первого шага я бы предложил сохранить исходное значение, чтобы в случае ошибки в ваших вычислениях, хотя и простых, вы могли пересчитать его в будущем. Затем вы можете сохранить процент НДС вместе с записью.
Если вам нужно сохранить рассчитанный НДС в БД, сделайте это с большим количеством мест. Это позволит вашим бухгалтерам использовать числа так, как им нужно, без вмешательства.