java.text.DecimalFormat положительный префикс мантисса

Можно ли иметь обязательную примету мантиссы?

Например, я хотел бы получить 0,01 и 1040.3, отформатированные с использованием того же DecimalFormat, что и: 1.00000e-002 и 1.040300e + 003

На данный момент использую:

DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.getDefault() );
otherSymbols.setDecimalSeparator('.');
otherSymbols.setExponentSeparator("e");

format="0.00000E000";
DecimalFormat formatter = new DecimalFormat(format, otherSymbols);

но этот шаблон не может отображать "+" в мантиссе.


person Marcin Kawka    schedule 10.12.2014    source источник
comment
возможный дубликат вопроса о научной нотации Java DecimalFormat   -  person Jørgen R    schedule 10.12.2014


Ответы (1)


Я не думаю, что это возможно с использованием DecimalFormat. Однако вы можете использовать что-то вроде этого:

public static void main(String[] args) {
    System.out.println(format(1040.3, "0.000000E000"));
}

public static String format(double number, String pattern) {
    DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.getDefault());
    otherSymbols.setDecimalSeparator('.');
    otherSymbols.setExponentSeparator("e");

    DecimalFormat formatter = new DecimalFormat(pattern, otherSymbols);
    String res = formatter.format(number);
    int index = res.indexOf('e') + 1;
    if (res.charAt(index) != '-') {
        res = res.substring(0, index) + "+" + res.substring(index);
    }
    return res;
}

В результате вы получите желаемую строку 1.040300e + 003.

person pietv8x    schedule 10.12.2014