Научная запись в десятичном виде - PullRequest
0 голосов
/ 30 июля 2011

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

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?

1 Ответ

9 голосов
/ 30 июля 2011

Вы парсинг результат от DecimalFormat - вы должны быть , возвращая это как String:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...