我正在计算高精度小数精度BigDecimal对象。将大数小数转换为无指数格式的双精度
我正在使用需要双参数的第三方库。当我尝试将其转换为double时,我以指数格式获取值而不是小数。
BigDecimal 0.000035000000000 Double 3.5E-5
BigDecimal bd;
BigDecimal(0.0000349999999995631583260546904057264328002929687500);
bd= bd.setScale(15,BigDecimal.ROUND_CEILING);
Log.i("bd","bd "+bd.toPlainString());
Log.i("bd","double"+bd.doubleValue());
我已经找到了点,但只在字符串格式转换这个3.5E-5的值作为正确小数的各种方式。而我需要在双
能够在没有指数来获得String对象但不是在双
DecimalFormat df = new DecimalFormat("#");
df.setMaximumFractionDigits(16);
String test=df.format(bd,doubleValue());
System.out.println("op2 "+test);
Double test1=Double.parseDouble(test);
System.out.println("op2 "+test1);
输出OP2 0.000035 OP2 3.5E-5
我的价值因为我无法控制第三方库,所以需要双倍的价值才能找到解决方案,因此很挣扎。
Refferred链接
Format BigDecimal without scientific notation with full precission
Converting exponential value in java to a number format
Conversion from exponential form to decimal in Java
How to resolve a Java Rounding Double issue
How to Avoid Scientific Notation in Double?
我的问题是不同的,那么这些链接,我不希望双倍作为字符串没有指数,而是我希望它只有双格式。
编辑
如果传递的双重价值指数格式,基于NDK libary将进一步为此目的,这将导致inmore小数点和较大的指数值上计算。所以,我想通过一个简单的双没有E
我想这只是打印引起这个值的值。该值是一个原始的双。 –
@ScaryWombat我检查了它,当我调试的时候,双重对象显示了E格式的值 –
我的观点是如果第三方库期望一个原语double作为参数,那么这正是你给他们的 –