我有一个由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 |
+--------+---------+--------+
基于@marciob、@user3679868和@joopeggen的编辑3决定根据舍入值进行计算。差额。047(.56-.553)显然被冲销了(审计标准)!
如果在一个表中使用舍入,而在另一个表中不使用,则无论采用何种舍入方法,都将始终存在此问题。
这里我们用全数来计算,并在报告中截断它。
问题内容: 这两个电话有什么区别?(有没有?) 问题答案: 提到但没有直接解决的一个重要问题是 “精度” 和 “比例” 之间的区别以及它们在两个语句中的用法。 “精度” 是数字中有效数字的总数。 “比例” 是小数点右边的位数。 MathContext构造函数仅接受precision和RoundingMode作为参数,因此第一条语句中从未指定scale。 显然接受scale和RoundingMode
我将以下代码与java BigDecimal setScale方法结合使用,并使用半\u偶数舍入模式,得到以下结果。 结果:1.11 预计:1.12 由于距离5最近的偶数数字应该是2,因此我预期的结果是1.12。但结果是1.11。再一次, 结果:1.15 预期:1.14 因为5左边的偶数是4,所以我希望结果是1.14。对此有什么解释吗?
问题内容: 以下代码使用, 分别显示和。在我看来,它应该分别显示和,因为丢弃的小数部分左边的数字(在这种情况下为5)是 奇数 。在这种情况下, 并且在的情况下, 当丢弃的小数部分> = 0.5时执行(这是正确的),否则执行。 问题答案: 该行为在Javadoc中有很好的描述: 舍入模式向“最近的邻居”舍入, 除非两个邻居都等距,在这种情况下,向偶数邻居舍入 。 因此,给定数字4.5,当您调用它时,
我正在使用开源项目(axil),该项目在java应用程序中实现了一个脚本引擎,我在尝试利用BigDecimal的舍入时遇到了一个主要的绊脚石。似乎BigDecimal正在将我的输入转换为科学符号,然后将我传递的精度应用于数字的SN表示的系数,而不是其非SN表示。例如: 生成的结果。这给我带来了两个问题。首先,我期待()的结果,因此获取会抛出任何涉及结果的数学运算。其次,我不期望,也找不到一种方法来
我目前正在做一个报告,我想找出两个日期之间的月份。我目前有这个 =(DATEDIF(U224, V224,"m")1) 然而,我希望它添加另一个元素,如果初始日期是在本月15日或之前,如果是16日,则会四舍五入,之后会四舍六入。 例如,第一个日期是2月13日,第二个日期是6月31日。它将带回5个月。然而,如果第一次约会是2月20日,则会提前4个月。 提前谢谢
问题内容: 我将以下代码与具有Half_even舍入模式的Java BigDecimal setScale方法配合使用,并获得以下结果。 结果:1.11 预期值:1.12 由于最接近5的偶数应该是2,因此我期望的结果是1.12。但是结果是1.11。然后再次, 结果:1.15 预期值:1.14 因为5左边的偶数是4,所以我期望结果是1.14。有什么解释吗? 问题答案: 这是由浮点不精确(在您的输入值