java - double

标签 java

我有以下输入:

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 保持精度吗?

谢谢:)

最佳答案

您应该能够使用 double 保持大约 15 位有效数字的准确性。您只需要保留 Double.parseDouble 返回的值,而不是只是 格式化它。您还只需阅读每一行一次:

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

如果您实际上需要确切的值(而不是问题中所述的 10 位有效数字),如果它们都是整数,您应该使用 BigInteger,或者 BigDecimal 如果某些值实际上是非整数。

关于java - double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17238197/

相关文章:

Java/clojure : Multiple character delimiter, 并保留分隔符

java - 三星 S9+ 和 RenderScript 内在函数

java - 从 JSON 创建 XML

java - 在 Java 中获取 Iterable 的大小

java - Shiro.ini 文件配置但在 Java 类中?

java - 上传到 iTunes Store 时发生错误 - 请升级 Java

java - 覆盖 JList 的互斥性

java - Hibernate,单表继承和使用父类(super class)字段作为鉴别器列

java - 如何使用 Android Studio 在 firebase 中检查 "user email already exists"

java - LDAP Java 属性 maxpwdAge 返回 -864000000000