2015-04-24 2 views
0

Я искал ответ здесь, но я не мог его найти, если есть другая статья, рассказывающая об этом, извините, но, мой ответ прост, я уверен это, но я не могу видеть, как я могу отформатировать десятичную как:Десятичный формат в Java

7.9820892389040892803E-05 

И я хочу, чтобы отформатировать этот номер, чтобы сохранить «E», но форматирование знаков после запятой иметь:

7.98203E-05 

Если кто-то может показать мне свет, который я бы очень признателен.

+0

http://obscuredclarity.blogspot.co.uk/2010/07/format-decimal-number -using-science.html или что-то – BretC

ответ

3

Вы можете использовать DecimalFormat (docs here):

Symbol Location Localized? Meaning 
0  Number  Yes   Digit 
#  Number  Yes   Digit, zero shows as absent 
.  Number  Yes   Decimal separator or monetary decimal separator 
E  Number  Yes   Separates mantissa and exponent in scientific notation. 

Например:

DecimalFormat formatter = new DecimalFormat("#.#####E00"); 
System.out.println(formatter.format(7.9820892389040892803E-05)); 
System.out.println(formatter.format(7.98E-05)); 

Выход:

7.98209E-05 
7.98E-05 

Обратите внимание, что при использовании # замыкающих нулей не будет печататься. Если вы хотите всегда пять цифр после запятой следует использовать 0:

DecimalFormat formatter = new DecimalFormat("0.00000E00"); 
System.out.println(formatter.format(7.98E-05)); 

Выход:

7.98000E-05 
+0

Спасибо !!! :) – elunap

1

Вы можете добиться этого с String Formatting

формате вам нужно будет %.5E (= точность 5 в прописных научных обозначениях)

Пример: System.out.printf("%.5E", 5/17d);, который печатает 2.94118E-01

0

Используйте объект DeciamlFormat ...

public static void main(String[] args) { 
     double amount = 7.9820892389040892803E-05; 
     DecimalFormat df = new DecimalFormat("0.00000E0"); 
     System.out.println(df.format(amount)); 
} 

Результаты:

enter image description here

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