如何解决含税和不含税价格的精度问题?

How to solve precision issue with tax inclusive and exclusive prices?

提问人:Gerrit de Swardt 提问时间:9/28/2023 最后编辑:TylerHGerrit de Swardt 更新时间:9/29/2023 访问量:37

问:

用户应该能够输入他们想要出售商品的全包价格。我存储了商品的计算出的独家价格、加价、成本和税率。我用它来计算包含的价格(我们的用户希望看到的价格)。

我可以使用 删除增值税。回到全包价格:.用户根据需要输入 200 个包含售价:exclusive = desired inclusive * 100 / (100 + tax rate)calculated inclusive = exclusive * (1 + (tax rate /100))

exclusive = 200 * 100 / (100 + 15) = 173,913043478261

再次计算包含:

calculated inclusive = 173,913043478261 * (1 + (15/100)) = 200

我需要巨大的精度,四舍五入并不能可靠地解决它。如果我没有在独占金额上存储较大的精度,则独占/独占计算将不起作用。这是最佳实践吗?精度需要达到多大才能可靠?

另一种选择是包含商店的价格和税率。然后,我可以计算税额,四舍五入到小数点后第二位,并在需要时减去税额。然后我只需要四舍五入一次(根据税额),而不必存储大量的精确数字。什么方法最好?

精密 数据建模

评论

0赞 Bohemian 9/29/2023
价格在现实生活中的精确度是多少?它是整数美分(还是您使用的货币中称为最小的货币单位)?如果没有,您必须满足的最小几分钱是多少?
0赞 Gerrit de Swardt 9/29/2023
@Bohemian感谢您的回复。我们需要满足的最小分数是小数点后第二位。我们可以简单地将四舍五入(或最接近的)小数点后第二位 - 但这行不通。我们得到的包容性销售价格时不时地会下降几美分。这很难预测,当您开始处理大量产品时,问题会变得更加复杂。我们尝试了各种舍入策略,但它们都有缺陷 - 它们只有在我们存储大精度时才有效,就像上面的例子一样。如果你愿意,我可以添加一些例子来说明舍入在较小的精度下是如何不起作用的。
0赞 Bohemian 9/30/2023
“小数点后第二位”是指“0.01美分”吗?请提供有问题的值和计算,显示您得到的结果以及正确的值是什么。

答: 暂无答案