摊销表中的四舍五入

JSz*_*JSz 5 rounding

我目前正在编写一个 C 程序,它可以生成并打印出一个摊销表,其中的数字四舍五入到两位数。我到处都得到了正确的数字,即:每月付款 = 本金支付 + 利息支付,除了最后一行(最后一次付款),有时我的结果不会相加,并且会减少一个。例如:

月付:88.83,PrinPaid:87.96,IntPaid:0.88

当然,查看打印为 6 位数字的结果,很容易明白为什么会发生这种情况:

MonthlyPay:88.834637,PrincPaid:87.955087,IntPaid:0.879551

处理这种情况的最佳方法是什么?
金融机构是做什么的?

And*_*ong 2

没有标准。

有人说:“四舍五入后,请使用四舍五入后的值来计算所有进一步的总计。”

还有其他人不同意,他们说应该对未舍入的值求和以避免累积舍入误差。例如,0.0666 + 0.0666 + 0.0666 + ... 15 倍应大约等于 1.0000,但如果在求和之前将每一项四舍五入到小数点后两位,则最终结果为 0.07 * 15 = 1.05!这就是使用未舍入值的论据。你的差一只是差,因为你只有两项需要求和。

我认为最终你必须考虑每种方法的利弊。谁会对舍入误差感兴趣?只有程序员吗?会计?顾客?它如何影响那些人?您能否发表一个消除歧义的声明,例如显示的值精确到小数点后两位”。在这种情况下,您根本不舍入任何内容,而只是在各处显示前两位小数。