BigDecimal上有Square Root的库吗?

时间:2009-09-06 05:19:11

标签: java math

Java中的BigDecimal是否存在Square Root的库?

3 个答案:

答案 0 :(得分:14)

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和@Tomasz的评论,谢谢。

答案 1 :(得分:12)

试试Big Square Roots。它使用Newton's method来近似解决方案,例如平方根。

答案 2 :(得分:1)

(这可能不适合您)

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