3

次の入力があります。

37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 91942213363574161572522430563301811072406154908250 23067588207539346171171980310421047513778063246676

そして、少なくとも 10sf の精度を維持して保管したいと考えています。

私のコード:

BufferedReader br = null;
    DecimalFormat d = new DecimalFormat("#");

    try {
        br = new BufferedReader(new FileReader(file));
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        System.out.println(e);
    }



    while(br.readLine() != null) {
        String x = d.format(Double.parseDouble(br.readLine()));
        System.out.println(x);
    }

ただし、この時点で、精度を維持しながら x を double に変換できますか?

ありがとう :)

4

1 に答える 1

4

で約 15 有効桁数の精度を維持できるはずですdouble。フォーマットするだけDouble.parseDoubleでなく、返された値を保持する必要があります。また、各行を一度だけ読む必要があります。

String line;
while ((line = br.readLine()) != null) {
    double value = Double.parseDouble(line);
    // Use value...
}

(質問に記載されている10桁の有効数字ではなく)実際に正確な値が必要な場合BigIntegerは、それらがすべて整数であるBigDecimal場合、または一部の値が実際に非整数になる場合に使用する必要があります。

于 2013-06-21T14:54:04.530 に答える