代码之家  ›  专栏  ›  技术社区  ›  Daniel C. Sobral

有平方根大于bigdecimal的库吗?[关闭]

  •  30
  • Daniel C. Sobral  · 技术社区  · 15 年前

    在Java中有大的平方根的库吗?

    3 回复  |  直到 6 年前
        1
  •  14
  •   Redder    11 年前

    JScience v4.3.1 有一个 Real 类,它似乎等同于 BigDecimal 这可能对你有帮助。使用示例:

    // The Square Root of Two, to 30 digits
    // According to "The Square Root of Two, to 5 million digits."
    // Source: http://www.gutenberg.org/files/129/129.txt
    System.out.println("1.41421356237309504880168872420");
    
    // Using JScience with 50 digits precision
    Real.setExactPrecision(50);
    System.out.println(Real.valueOf(2).sqrt());
    
    // Using default java implementation
    System.out.println(Math.sqrt(2));
    
    > 1.41421356237309504880168872420
    > 1.414213562373095048801689
    > 1.4142135623730951
    

    编辑 :更新了代码和链接以反映当前版本(v4.3.1)。基于@ile an@tomasz的评论,谢谢。

        2
  •  12
  •   greybeard    6 年前

    尝试 Big Square Roots . 它使用 Newton's method 用于近似解,如平方根。

        3
  •  1
  •   quant_dev    15 年前

    (这可能不是您的解决方案)

    只要bigdecimal在double范围内,就可以将bigdecimal转换为double,使用math.sqrt()并将double升级回bigdecimal。它可能比对bigdecimals进行计算更快。在许多情况下,与计算平方根时不可避免的误差相比,由于类型之间的转换而导致的精度损失可以忽略不计。