发票表中有三个字段:

subtotal    decimal(12,4)
tax_amount  decimal(12,4)
total       decimal(12,4)

我遇到了取整的问题。所以有一张发票,上面有以下数值。加法相加,但是当显示发票数据并为发票生成pdf时,显示的数据并不总是相加。
           stored value     displayed (rounded)
                                value
subtotal    165.1610         165.16
tax_amount  24.7742          24.77
total       189.9352         189.94

存储的值相加。total列是通过在PHP中添加subtotaltax_amount值来计算的。舍入正确,但165.16+24.77=189.93,而不是189.94。
我如何处理这些情况?情况并非总是如此。

最佳答案

将存储值四舍五入到最接近的一便士。使用PHP计算总计或小计时,将四舍五入的值相加。
如果要以某种方式显示舍入聚合,最好以完全相同的方式计算,以避免混淆。
可以将聚合项显示为未舍入,然后出于显示目的舍入最终和。从长远来看,如果你在数据库中存储的是零头硬币,这可能会发挥得更好。
另一种选择可能是对发票收取舍入费用,以解释差异,尽管这可能会让一些人感到困惑。
也就是说,从程序上讲,最好尽可能避免分文。
无论你选择做什么,都要始终如一!

07-24 14:20