簡體   English   中英

在Java中將String轉換為double。 更改印刷雙打的格式

[英]Converting String to double in java. Change format of printed double

我正在用Java閱讀以下CSV文件,

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

這是我的代碼,用於讀取此CSV文件並將CSV文件的第一列(是字符串)轉換為雙精度

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 

提前致謝。

temp和i完全相同,只是double值以科學計數法格式設置。 例如,如果您喜歡使用DecimalFormat ,則可以設置不同的格式。

Yups vizier是正確的,您需要做的是:

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));

}

另一個結果是科學計數法,但相同。

如果要更改表示形式,則可以使用String.format("%.3f", i) ,該數字表示3位小數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM