包含增值税的价格有两个组成部分。实际价格和增值税金额。
对于 21% 的比率,除以 1.21 是正确的,您需要检查的是如何舍入/截断(显然,有些人喜欢将后者称为“舍入为零”)。与负责该项目的会计师核实应如何处理计算的增值税金额。
一旦你破解了,不要再做任何乘法/除法或四舍五入。使用实际官方计算的增值税金额进行简单的加法/减法运算将为您提供所需的一切。有或没有四舍五入的乘法/除法会让你迷路,在这里和那里失去便士/美分,有时是“正确的”(但只是巧合)。
在您的系统外部接收发票金额(包括由发票人计算的增值税)时,有两种通用方法,我现在意识到您正在使用其中一种。
尽管增值税是一种标准计算方法,但允许任何给定公司进行计算的方法不止一种。这意味着您开具发票的增值税的计算方式(舍入/截断)可能与您的会计师希望在您的系统中完成的方式不同,这对增值税人员来说是可以的。
您需要对发票上的增值税进行处理,将其作为事实处理,但您确实需要验证它是否正确,或者至少是合理的(您使用的方法)。
要验证发票增值税是否正确,您需要了解供应商如何计算其增值税。有效的方法数量有限,所以这并不像听起来那么复杂。在您的“供应商表”上,您有一个标志/指示器,说明它们是如何舍入的。一旦您知道这一点,您就可以绝对验证向您开具的增值税发票是否正确。
另一种方式是宽容。就我个人而言,我不喜欢这样,但在我最后工作的地方收到的发票就是这样处理的。货币单位的百分之一是所应用的容差。
如果您计算增值税并四舍五入到最接近的 100 个货币单位,您应该能够验证向您收取的增值税。在这一点上,再次,不要做更多的乘法/除法/舍入,而是酌情使用加法/减法。
我不知道 PHP 中小数的四舍五入是如何工作的。
24 / 1.21 = 19.8347 到小数点后四位。= 19.834 到小数点后三位(截断中间结果)
如果您手动将第一位四舍五入到小数点后两位,您将得到 19.84。如果你对第二个进行舍入,你会得到 19.83。
虽有所不同,但仍在承受范围之内。但是,如果您乘法/除法/四舍五入,您可能会损失 0.02(如果您的代码与供应商的代码不符)。