0

我想找到一种方法来缩放可以包含不同数字的 bigdecimals 的除法。

如果我使用此代码:

r= x.divide(y,10, RoundingMode.HALF_UP);

几乎所有结果的结果都是正确的,但是如果我有一个除数,其点前的位数比刻度多,则结果为 0.0000000000。

我必须做什么才能获得这些划分的正确精度?

1 / 3 =0.3333333333(比例 10)

1 / 151545545664651878 = 1.515455456646E-17(例如)

100000000000000 / 3 = 3.3333333333E+14

谢谢。

4

1 回答 1

0

我找到了方法。它使用数学上下文而不是规模来实现操作。似乎 MathContext 构造函数使用精度而不是比例。

与 MathContext

MathContext mc = new MathContext(10, RoundingMode.HALF_UP);
BigDecimal r = x.divide(y, mc);
Log.i("mc","r = " + r);

有规模

BigDecimal r = x.divide(y,10, RoundingMode.HALF_UP);   
Log.i("scale","r = " + r);

如果我意识到这个划分:1 / 3333333333333333333333333 =

第一个输出:3.0000000000E-19 第二个输出:0E-10

因此,将 Scale 设置为大小数似乎与 MathContext 中的 Scale 相同,但事实并非如此。我希望它可以帮助某人。

于 2013-04-22T13:37:53.207 回答