Я делаю вычисления с высокой точностью десятичной точности BigDecimal объектов.Преобразование большого десятичного в двойное без экспоненциального формата
Я использую стороннюю библиотеку, для которой требуется параметр в double. Когда я пытаюсь преобразовать это в 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
I с тех пор я пытаюсь найти решение, поскольку у меня нет контроля над сторонней библиотекой, для которой значение должно быть в двойном
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?
Мой вопрос отличается от этих ссылок, я не хочу, чтобы double как строка без экспоненты, а я хочу только в двойном формате.
РЕДАКТИРОВАТЬ
Если двойное значение, переданное в экспоненциальном формате, на основе НКА libary будет дополнительно выполнять вычисления для данного объекта, что приведет к inmore десятичных точек и большему экспоненциальному значения. Итак, я хочу передать простой double без E
Я бы предположил, что это только печать значения, которое вызывает это. Значение является примитивным двойником. –
@ScaryWombat Я проверил его, когда я отлаживаю также, двойной объект показывает значение в формате E –
, если моя сторонняя библиотека ожидает примитивного двойника в качестве параметра, то это именно то, что вы даете им –