我正在尝试升级应用程序,以便可以向多个国家/地区销售。我将所有价格以英镑存储在数据库中,不包括高达 4dp 的税,我需要计算包含税的国家货币的价格。
我是将价格乘以汇率乘以不含税价格(选项 1)还是计算含税金额然后乘以汇率(选项 2)?在查看了 OpenCart 如何计算它之后,我还添加了一个选项 3,它与选项 2 类似,但仅在显示它时才会舍入。以下是所有 3 个选项的公式:
选项1:
Round((Price * Exchange Rate) / 100 * (100 + Tax Rate))
选项 2:
Round(Round(Price / 100 * (100 + Tax Rate)) * Exchange Rate)
选项 3:
Round((Price / 100 * (100 + Tax Rate)) * Exchange Rate)
例如,假设我有一个价格为 89.99 的产品。如果我想以汇率为 1.5 且税率为 20% 的货币显示它。我会说:
选项1:
Round((89.99 * 1.5) / 100 * (100 + 20)) = 161.98
选项 2:
Round(Round(89.99 / 100 * (100 + 20)) * 1.5) = 161.99
选项 3:
Round((89.99 / 100 * (100 + 20)) * 1.5) = 161.98
我发现 OpenCart 总是在最后将未四舍五入的数字乘以汇率。例如,他们计算行总数的公式是:
Round((Price / 100 * (100 + Tax Rate)) * Quantity * Exchange Rate)
因此,如果我要订购 3 个产品,它将提供:
Round((89.99 / 100 * (100 + 20)) * 3 * 1.5) = 485.95
我发现以 OpenCart 的方式这样做的问题是用户将看到 161.98 的商品价格(含税)和 485.95 的总价。但是,如果我说 161.98 * 3,我会得到 485.94,所以它的总和不正确。
重要的是我做对了,因为你可以看到我最终会遇到一分钱的问题。如果有人能让我知道哪种方式是正确的,或者如果没有一种方式是正确的,我将不胜感激。谢谢
请您参考如下方法:
我无法告诉您正确的选项是什么,或者即使有一个正确的选项。但是根据我的经验,我可以说,如果做一件事有多种选择,请在您的软件中对其进行配置。在这种情况下,您可以轻松使用 strategy pattern并使计算价格的策略可配置。客户可以选择他们想要的计算方式。




