如何在对这些值求和之后划分BigDecimal并获得相同的值

时间:2013-10-21 13:27:49

标签: division bigdecimal currency financial

我需要划分一个财务值,对这些值求和,然后检查它们是否相同。类似的东西:

BigDecimal a = new BigDecimal(45.58);
List<BigDecimal> lista = new ArrayList<BigDecimal>();
BigDecimal sum = new BigDecimal("0");

for(int i=0;i<31;i++){
   lista.add(a.divide(new BigDecimal(31), 6, RoundingMode.HALF_UP));
   sum = sum.add(lista.get(i));
   System.out.println(lista.get(i));
}

System.out.println("Initial value:   "+a);
System.out.println("Total: "+sum);

问题在于,当我这样做时,我无法获得相同的价值。 如果我使用45.58(可以是任何值),例如我得到:

Initial value:   45.5799999999999982946974341757595539093017578125
Total:           45.580013

我怎么能得到类似的东西(重要的是变量“sum”和“a”是相同的):

Initial value:   45.580013
Total:           45.580013

先谢谢大家!

0 个答案:

没有答案