我有一个由BigDecimal
个数字组成的数据集。我想在报告中提出这个问题。我已设法生成具有以下格式的报告。这有点类似于会计中的试算平衡。但事实并非如此!
表中的数据的值中包含4个小数点。但是在报告中它应该四舍五入到小数点后两位。
报告也必须准确,因此使用BigDecimal
。
+--------+---------+--------+
|Account | Debits | Credits|
+--------+---------+--------+
|A | 0.2760 | 0.1630 |
+--------+---------+--------+
|B | 0.2770 | 0.2640 |
+--------+---------+--------+
|Total | 0.5530 | 0.4270 |
+--------+---------+--------+
真正的问题是显示总数。四舍五入后,总计将无法正确累加。
+--------+---------+--------+
|Account | Debits | Credits|
+--------+---------+--------+
|A | 0.28 | 0.16 |
+--------+---------+--------+
|B | 0.28 | 0.26 |
+--------+---------+--------+
|Total | 0.55 | 0.43 |
+--------+---------+--------+
我使用HALF_EVEN
舍入模式,因为它用于簿记,也因为这个案例也涉及财务。
我可以在舍入值后添加它。然后报告计算就可以了。但它不代表数据库中的实际值(.553接近.55,但如果我在舍入后将其加起来,结果将是.56,。553不接近.56)。
无论如何都要克服这个问题?我环顾四周看看如何制作试算平衡报告,但我找不到合适的解决办法吗?
编辑1
我在这样的金融系统中看过试算平衡报告,它们是否在四舍五入后进行计算?我一直将此与试算平衡报告进行比较,因为此报告类似于一个报告。
编辑2
是否可以对舍入值进行计算?我了解到不建议对舍入值进行计算,因为原始值会被丢弃。
编辑3 基于@MarcioB,@ user3679868和@JoopEggen决定根据舍入值进行计算。差异.047(.56 - .553)显然已被注销(审计标准)!
答案 0 :(得分:1)
如果您在一张桌子中使用四舍五入并且不在另一张桌子上使用它,那么无论采用舍入方法,您都会遇到此问题。
这里我们使用微积分的完整数字,并在报告中截断它。
答案 1 :(得分:1)
因为如果您希望总计等于帐户总数,那么您将对每个帐户进行四舍五入,您必须使用帐户的舍入值计算总计。