2013-12-21 6 views
0

У меня возникла проблема с форматированием двойной переменной, отображаемой для пользователей. Переменная должна быть двойной, но после некоторых вычислений init, она показывает пользователям, включая знак E. Как я могу удалить знак E из него и только показывает, что это нормальное поведение?Форматирование двойной переменной

Спасибо!

double formattedNumber = Double.parseDouble(new DecimalFormat("#############").format(myNum * calcal)); 
+2

Почему вы выполняете вычисление, а затем преобразуете результат в строку, а затем разбираете строку обратно в double? – CommonsWare

+0

Я пытался сделать это напрямую, чтобы получить сумму myNum * calcal, но это дало мне ошибку. –

+1

@MohamedHemdan Ну, что вы пробовали дальше, это не решение. –

ответ

2

Существуют различные способы преобразования двойных значений в текстовое представление. Самый простой способ - использовать форматирование строк. Рассмотрим следующий тест единицы:

@Test 
public void test() { 
    System.out.format("%s%n", 1.12345e37); 

    System.out.format("%e%n", 1.12345e37); 
    System.out.format("%f%n", 1.12345e37); 
    System.out.format("%g%n", 1.12345e37); 

    System.out.format("%E%n", 1.12345e37); 
    System.out.format("%G%n", 1.12345e37); 
} 

При выполнении печатает следующее:

1.12345E37 
1.123450e+37 
11234500000000000000000000000000000000.000000 
1.12345e+37 
1.123450E+37 
1.12345E+37 

Как вы можете видеть, различные шаблоны формата дают разные результаты. Вариант% f дает то, что я предполагаю, это ответ, который вы хотите. См. String.format и Format String Syntax для получения дополнительной информации.

+0

Спасибо, Деннис ... Он работал со мной, но в моем числе появляются 6 нулей нулей. как я могу удалить их? –

+0

Вы действительно должны прочитать ссылку [Формат String Syntax] (http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax), которую я поставил в своем ответе, так как это все подробно объяснено там. Но использование '% .0f' вместо'% f' не дает цифр после десятичного разделителя (а также избавляется от десятичного разделителя). –

Смежные вопросы