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 转换为双倍保持精度吗?

谢谢 :)

4

1 回答 1

4

您应该能够使用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 回答