2

我有一个由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舍入模式是因为它用于簿记,也因为这种情况也涉及财务。

我可以在四舍五入后将其相加。那么报表计算就OK了。但它不会代表数据库中的实际值(0.553 接近 0.55,但如果我在四舍五入后将其相加,结果将是 0.56,0.553 不接近 0.56)。

有没有办法克服这个问题?我环顾四周看看如何制作试算表,但我找不到任何合适的解决方案?

编辑 1

我在这样的金融系统中看到过试算表,他们是否在四舍五入后进行计算?我一直将其与试算表报告进行比较,因为该报告与一份报告相似。

编辑 2
可以对四舍五入的值进行计算吗?我了解到,不建议对舍入值进行计算,因为原始值会被丢弃。

编辑 3 基于@MarcioB、@user3679868 和@JoopEggen 决定根据四舍五入的值进行计算。差异 .047 (.56 - .553) 显然已注销(审计标准)!

4

2 回答 2

1

如果您在一张表中使用舍入,而在另一张表中不使用,则无论使用哪种舍入方法,您都会遇到此问题。

在这里,我们使用微积分的完整数字,并在报告中截断它。

于 2014-07-29T12:12:30.917 回答
1

因为如果您想要一个等于帐户总和的总和,您将四舍五入每个帐户,您将必须使用帐户的四舍五入值来计算总和。

于 2014-07-29T12:16:03.697 回答