2012-05-19 48 views
1

我讀Java中的以下CSV文件和將字符串轉換爲java中的double。更改格式打印雙

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

這裏是我的代碼讀取此CSV文件,並轉換成CSV文件的第1列(這是一個字符串)到雙

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 

爲什麼變量「temp」和「i」的值不一樣。我必須在代碼中做什麼更改才能獲得以下值:

1191196800.681 
1191196800.681 

在此先感謝。

+1

不要在打印默認的科學記數法?嘗試printf /格式。 –

+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

溫度和我是完全一樣的,只是雙數值格式化爲科學記數法。例如,如果您喜歡使用DecimalFormat,則可以採用不同的格式。

+0

謝謝您的建議 – user745475

0

其他結果是科學記數法,但是是相同的。

如果你想改變表示你可以使用String.format("%.3f", i),它代表與3位小數

相關問題