1

Javaで次のCSVファイルを読んでいます

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

これは、この CSV ファイルを読み取り、CSV ファイルの 1 列目 (文字列) を double に変換するコードです。

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 

前もって感謝します。

4

3 に答える 3

7

temp と i はまったく同じです。double 値が科学表記法でフォーマットされているだけです。たとえば、 DecimalFormatを使用したい場合は、別の形式にすることができます。

于 2012-05-19T14:42:21.940 に答える
1

あなたがする必要があるのはこれです:

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

}
于 2012-05-19T15:03:36.463 に答える
0

もう 1 つの結果は指数表記ですが、同じです。

表現を変更したい場合は、使用できる を使用できますString.format("%.3f", i)。これは、小数点以下 3 桁の数値を表します。

于 2012-05-19T14:52:50.220 に答える