我的发票表中有三个字段:
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 中添加 subtotal
和 tax_amount
值来计算的。四舍五入正确,但 165.16 + 24.77 = 189.93 而不是 189.94。
我该如何处理这些情况?但情况并非总是如此。
最佳答案
将存储的值四舍五入到最接近的美分。当您使用 PHP 计算总计或小计时,请将四舍五入的值相加。
如果您要以某种方式显示舍入聚合,则最佳实践可能是以完全相同的方式进行计算以避免混淆。
您可以将聚合项显示为未舍入,然后舍入最终总和以供显示。如果您在数据库中存储小数便士,从长远来看,这可能会发挥更好的作用。
另一种选择可能是在发票上收取四舍五入费用以解决差异,尽管这可能会让一些人感到困惑。
话虽这么说,从编程角度来说,最好尽可能避免使用小数便士。
Whatever you choose to do, be consistent!
关于php - 在 MySQL 和 PHP 中处理货币时如何处理精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36780953/