Как конвертировать Double в String с экспоненциальным знаком - PullRequest
1 голос
/ 30 мая 2019

Я хочу преобразовать Double в String с экспоненциальными знаками в нем.Например, значение Double равно 4.4395749E7 после преобразования в строку, оно должно быть 4.4395749E+07 (как показано в MS Excel).

Я пробовал double.toString(), но оно конвертируется в 4.4395749E7:

Double doubleValue = 44395749d;
doubleValue.toString();

Ожидается 4.4395749E+07, но фактическое значение 4.4395749E7.

Ответы [ 2 ]

2 голосов
/ 30 мая 2019

вы можете использовать String.format (), E - код формата для экспонент

Double doubleValue = 44395749d;
System.out.println(String.format("%E", doubleValue));
1 голос
/ 30 мая 2019

Вы можете использовать DecimalFormat для форматирования вашего номера:

Double value = 44395749d;
DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance();
if (value > 1 || value < -1) {
    symbols.setExponentSeparator("E+");
}
DecimalFormat decimalFormat = new DecimalFormat("0E00", symbols);
decimalFormat.setMaximumFractionDigits(Integer.MAX_VALUE);
System.out.println(decimalFormat.format(value));

Используется DecimalFormatSymbols для добавления + к показателю степени, если необходимо (value > 1 или value < -1). Чтобы получить все цифры дроби, используйте setMaximumFractionDigits(Integer.MAX_VALUE). При необходимости вы можете просто изменить формат.

Результат будет 4.4395749E+07.

Не забудьте указать конкретную локаль при необходимости:

DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance(Locale.ENGLISH)
...