Java中是否有用于BigDecimal平方根的库?
Java中是否有用于BigDecimal平方根的库?
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
编辑:根据@ile和@Tomasz的建议,已更新代码和链接以反映当前版本(v4.3.1)。
(这可能不是您的解决方案)
只要您的BigDecimal在double范围内,您可以将BigDecimal转换为double,使用Math.sqrt()并将double提升回BigDecimal。与在BigDecimals上进行计算相比,这可能会更快。在许多情况下,由于类型之间的转换而导致的精度损失将与计算平方根时不可避免的误差相比微不足道。