会计中的舍入算术

时间:2013-12-10 10:09:57

标签: math rounding

注意

这是一个会计软件,因此值将四舍五入为分(2位小数)。

问题

鉴于最终价值发票金额$ 4488.70(我们可以调用此值final),以下列方式获取初始小计值(subtotal):

subtotal + round(0.07 * subtotal) - round(0.02 * subtotal) = final

如果final为4488.70美元, 直接按1.02划分并获得$ 4400.6862745(四舍五入至$ 4400.69)

对于发票,这不符合:

Subtotal    4400.69
VAT (7%)     308.05  ==> round(4400.69 * 0.07)
WHT (5%)     220.03  ==> round(4400.69 * 0.05)
==========
Final       4488.71 (4400.69 + 308.05 - 220.03)

这不是想要的最终价值(减去1美分)。

这里更好的小计应该是4400.68,但我们如何通过算法获得呢?

Subtotal    4400.68
VAT (7%)     308.05  ==> round(4400.68 * 0.07)
WHT (5%)     220.03  ==> round(4400.68 * 0.05)
==========
Final       4488.70 (4400.68 + 308.05 - 220.03)

当前提出的解决方案

在内部,我们建议首先获得暂定的subtotal = final/1.02,然后继续前进以查看我们是否获得最终预期值,如果没有,我们会尝试subtotal - 1并最终{{1} }。

  • 通过1:subtotal + 1
  • 通过2:final/1.02
  • 通过3:final/1.02 - 0.01

是否有更好,更有效且仍然可靠的方法?

1 个答案:

答案 0 :(得分:2)

您想要的是一般无法实现的目标。可能存在某些值final,其中不存在此类subtotal。 (我现在懒得去做一个数学证明,但我确信可以找到一些值,subtotal产生desiredFinal - 0.01subtotal + 0.01产生desiredFinal + 0.01到期四舍五入的方式)。

有两种常见的解决方法:

  1. subtotal = final/1.02,然后计算其他所有内容,就像您在第一个示例中所做的那样:

    Subtotal    4400.69
    VAT (7%)     308.05  ==> round(4400.69 * 0.07)
    WHT (5%)     220.03  ==> round(4400.69 * 0.05)
    ==========
    Final       4488.71 (4400.69 + 308.05 - 220.03)
    

    如果存在差异,请在subtotalfinal中添加或删除它。这意味着增值税和WHT将不准确w.r.t. subtotal

    Subtotal    4400.68  ==> one cent removed
    VAT (7%)     308.05
    WHT (5%)     220.03
    ==========
    Final       4488.70  ==> one cent removed
    
  2. 明确提及舍入错误:

    Subtotal    4400.69
    VAT (7%)     308.05
    WHT (5%)     220.03
    Rounding    -  0.01
    ==========
    Final       4488.70
    
  3. 选择哪一个取决于您当地的税法。