2012-05-19 2 views
1

я читаю следующий CSV-файл в Java иПреобразование строки, чтобы удвоить в java. Изменение формата печатных двойной

1191196800.681 - !AIVDM,1,1,,,13aG?N0rh20E6sjN1J=9d4<00000,0*1D 

Вот мой код, чтобы прочитать этот CSV-файл и конвертировать 1-й столбец файла CSV (который является String) к двойной

public class ReadCSV { 

public static void main(String[] args) { 

    try { 
     BufferedReader CSVFile = new BufferedReader(new FileReader(
       "C:\\example.txt")); 

     try { 
      String dataRow = CSVFile.readLine(); 

      while (dataRow != null) { 
       String[] dataarray = dataRow.split("-"); 

       String temp = dataarray[0]; 

       double i = Double.parseDouble(temp); 

       System.out.println(temp); 
       System.out.println(i); 
       dataRow = CSVFile.readLine(); 

      } 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 

} 

}

Когда я выполняю код я получаю следующие значения

1191196800.681 
1.191196800681E9 

Почему значение переменных «темп» и «i» не одинаково. Какие изменения необходимо внести в код, чтобы получить следующие значения:

1191196800.681 
1191196800.681 

Заранее спасибо.

+1

Не печатать его в стандартная научная нотация? Попробуйте printf/format. –

+1

'1.191196800681E9 == 1191196800.681' –

ответ

1

Yups визирь является правильным то, что вам нужно сделать, это:

public static void main(String[] args) throws Exception { 
    // TODO Auto-generated method stub 
    String dataRow = "1191196800.681"; 


     String[] dataarray = dataRow.split("-"); 

     String temp = dataarray[0]; 
     DecimalFormat df = new DecimalFormat("#.###"); 
     double i = Double.parseDouble(temp); 

     System.out.println(temp); 
     System.out.println(df.format(i)); 

} 
+0

Благодарим вас за предложение – user745475

7

temp и i точно такие же, только двойное значение отформатировано в научной нотации. Вы можете отформатировать его по-другому, если вам нравится использовать, например, DecimalFormat.

+0

Благодарю вас за предложение – user745475

0

Другой результат в научной нотации, но то же самое.

Если вы хотите изменить представление вы можете использовать String.format("%.3f", i), который представляет собой число с 3 знаков после запятой

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