Как установить определенный формат для обозначения E в Java

java #formatting

#java #форматирование

Вопрос:

Мне нужно преобразовать некоторые значения с плавающей запятой в формат, подобный этому: 2,5000E-003 , 2,8625E 000

Я знаю, что могу сделать это так:

 String.format("%s,%sE%s", digitInt, digitAfterDot, digitDegree)
 

Но я надеюсь, что кто-нибудь знает более умное и аккуратное решение

Ответ №1:

Вы можете использовать:

 String.format("%1.4e",12345.67890123)
 

Результатом этого является:

 1,2346e 04
 

Вот некоторая документация

Редактировать
Если вам нужно 3 цифры в экспоненте, вы можете использовать DecimalFormat форматировщик:

 DecimalFormat format = new DecimalFormat("0.0000E000");
System.out.print(format.format(12345.67890123f));
 

Какие результаты:

 1,2346E004
 

Обратите внимание, что он не имеет положительного знака, если показатель положителен.
Вы можете исправить это с помощью:

 DecimalFormat format = new DecimalFormat("0.0000E000");
String result = format.format(12345.67890123f);
if (!result.contains("E-")) {
    result = result.replace("E", "E ");
}

 

Комментарии:

1. @Flav Большое спасибо, но в моей ситуации важно иметь три цифры после «e», даже если они равны нулю

2. @SergeyYuryev Я только что отредактировал свой ответ другим решением