划分包含比分度更大的分隔符的bigdecimal

时间:2013-04-22 00:23:31

标签: java android scale bigdecimal

我想找到一种方法来缩放可以包含不同数字的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

感谢。

1 个答案:

答案 0 :(得分:0)

我找到了方法。它使用mathcontext而不是scale来实现操作。 似乎MathContext构造函数使用的是precission而不是scale。

使用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相同,但事实并非如此。 我希望它可以帮助某人。