2017-02-23 4 views
1

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

import java.text.NumberFormat; 
import java.text.DecimalFormat; 

public class Lessons { 

public static void main(String[] args) { 

    double d = 7.1348759272948202842847; 

    System.out.printf("%15e %n", d); 

    NumberFormat cashFormat = NumberFormat.getCurrencyInstance(); 

    System.out.println(cashFormat.format(d)); 

    double e = 14.9; 
    double f = 16.09805938020001; 
    double g = 12346; 

    DecimalFormat Dec_Format = new DecimalFormat("##0.##E0"); 

    System.out.println(Dec_Format.format(e)); 
    System.out.println(Dec_Format.format(f)); 
    System.out.println(Dec_Format.format(g)); 
} 

В книге, например, он говорит, что 12345 отформатирован "## 0 ## E0." Является "12.3E3". Выход, который я получаю, составляет «12.345E3».

Результат, который я получаю, имеет смысл, но поскольку он не соответствует книге, я не уверен, что это ошибка в книге или если я делаю что-то неправильно.

Это нормальный выход?

ответ

0

формат, который вы используете для печати 12.3E3 не является правильным, так вместо того, чтобы:

DecimalFormat Dec_Format = new DecimalFormat("##0.##E0"); 

вы должны использовать:

DecimalFormat Dec_Format = new DecimalFormat("##0.E0"); 

Это покажет вам:

7,134876e+00 
7,13 € 
14,9E0 
16,1E0 
12,3E3//<----------------- 
+0

Понимаю. Я правильно понял часть форматирования денег, но из-за того, как это показала книга, научная нотация не имела большого смысла. Если я правильно понимаю ваш пример, нотация Java будет по умолчанию одной десятичной запятой без указания, поэтому, когда я добавлю ##, она добавит еще два числа на конце (если доступно). (т. е. ## 0.E0 = 12,3, тогда как ## 0. ## E0 = 12.345E3). Это сделало бы намного больше смысла, чем формулировка/форматирование в книге. – AdamWestPhD

+0

так? что это значит, что мое решение неверно @AdamWestPhD :) –

+0

Похоже, что он работает :) спасибо за помощь – AdamWestPhD

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