Я пытаюсь найти лучший способ рассчитать цены и итоги корзины. Все цены на продукцию представлены цифрами с 2 десятичными знаками, однако при добавлении скидки в корзину, скажем, на 50%, эта цена, например, составляет 37,27 долл., При этом цифра составляет 18,635 долл. США с 3 десятичными знаками. Теперь я хотел бы, чтобы вычисления были точными, но округление 3 десятичных числа не всегда дает ожидаемый результат.Корзина покупок
Сценарий
У меня есть 5 продуктов в моей корзине со следующими, оригинальные цены:
- $ 80,00
- $ 189,62
- $ 37,27
- $ 43,75
- $ 105.34
Давать нам в общей сложности $455.98
Когда я добавить глобальную скидку в размере 50% - доведя фигурок выше, это дало бы мне $227.99
. Теперь это будет нормально работать, если мне не нужно будет получать цифру для каждого элемента после того, как была применена скидка - и это тот случай, когда я хочу передать элементы в PayPal Express Checkout. Запрос будет терпеть неудачу, если общая сумма равна сумме всех предметов в корзине.
Приведенные выше цифры после деления каждая на 2 (50%) являются:
- $ 40,00
- $ 94,81
- $ 18,635
- $ 21,875
- $ 52,67
дает нам точно то же общее количество, когда мы делим общую сумму на 2. Проблема заключается в том, что я не хочу 3 десятичных цифр в моей корзине, поэтому округление их результат становится:
- $ 40,00
- $ 94,81
- $ 18,64
- $ 21,88
- $ 52,67
, который добавляет до $228
, который при умножении на 2 дает нам другую фигуру, которую мы первоначально имели в корзине без скидки b .
Каков наилучший способ справиться с такими сценариями?
Не рассчитывайте с округленными номерами ... Сохраняйте номера оригиналов и рассчитывайте их с помощью этих параметров. – Naruto
Ну, это не всегда вариант, когда вы можете показывать только 2 десятичных знака на сайте. –
Чтобы ответить на более широкий вопрос: либо рассчитать цену после скидки во втором способе, либо показать это клиенту «Итого после скидки: $ 288,00» или просто отправить paypal на один объект с заказом и связанную с ним стоимость - нет конкретных необходимо подробно рассказать о каждом продукте – Steve