Научное представление в десятичной системе

У меня есть двойной, и я пытаюсь преобразовать его в десятичное число. Когда я использую десятичный формат для достижения этого, я получаю следующее:

public void roundNumber(){
    double d = 2.081641999208976E-4;
    JOptionPane.showMessageDialog(null,roundFiveDecimals(d));
}

public double roundFiveDecimals(double d) {
    DecimalFormat df = new DecimalFormat("#.#####");
    return Double.valueOf(df.format(d));
}

Я хочу, чтобы результат был .00021; однако я получаю 2.1E-4. Кто-нибудь может помочь объяснить, как получить .00021, а не 2.1E-4?


person Michael Rentmeister    schedule 29.07.2011    source источник


Ответы (1)


Вы анализируете результат от DecimalFormat — вы должны вернуть его как String:

public String roundFiveDecimals(double d) {
    DecimalFormat df = new DecimalFormat("#.#####");
    return df.format(d);
}

Само значение double не имеет понятия форматирования — это просто число. Работа DecimalFormat состоит в том, чтобы отформатировать значение в текст, как вы хотите... если вы затем преобразуете этот текст обратно в число, вы потеряете эту работу.

person Jon Skeet    schedule 29.07.2011