我想找到一种方法来缩放可以包含不同数字的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
感谢。
答案 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相同,但事实并非如此。 我希望它可以帮助某人。