2011-12-16 140 views
4

我使用BigDecimal来做计算。 对于计算的结果我做的:BigDecimal比例和计算

result.setScale(4, RoundingMode.HALF_UP); 

当使用BigDecimal规模和舍入.divide方法是必需的,所以现在我这样做是这样的:

BigDecimal result = bigDecimal1.divide(bigDecimal2, 10, RoundingMode.HALF_UP); 

所以我只是用一个足够大的规模,以确保计算是正确的。 但我不确定这是否使用BigDecimal进行计算的正确方法,并且我对此有所怀疑...

所以,任何指针都会被赞赏。

+1

而问题是? – jarnbjo 2011-12-16 12:41:45

+0

@jarnbjo如果我做对了吗?如果没有,那我该怎么办? ... – 2011-12-16 13:25:47

+1

而且您向我们提供了哪些功能要求,以便我们决定您是否正确地执行此操作? – jarnbjo 2011-12-16 13:52:38

回答

2

您需要对您认为正确的答案有清晰的认识。如果误差小于1e-10,那么可以,或者它是否需要为1e-20或1e-30等。对于许多除法结果,由于结果以小数表示,因此无法得到确切的结果。

顺便说一句:如果你需要少于15位有效数字,这是使用double的准确性,你可能不需要使用BigDecimal。

例如是1/3被认为是0.333333333或0.333333333333333333,但它永远不会是完全正确的(即长度无限)