java用牛顿法和 BigDecimal 类求出从命令行所输入整数的平方根
时间: 2024-02-07 12:03:26 浏览: 98
牛顿法算平方根java
可以使用以下代码来实现:
import java.math.BigDecimal;
public class NewtonSqrt {
// 牛顿迭代法求平方根
public static BigDecimal sqrt(BigDecimal c, BigDecimal tolerance) {
if (c.compareTo(BigDecimal.ZERO) < 0) {
return BigDecimal.ZERO;
}
BigDecimal err = tolerance.add(BigDecimal.ONE);
BigDecimal t = c; // 初始值
while (err.compareTo(tolerance) > 0) {
BigDecimal x = c.divide(t, 10, BigDecimal.ROUND_HALF_UP);
t = x.add(t).divide(BigDecimal.valueOf(2), 10, BigDecimal.ROUND_HALF_UP);
err = c.subtract(t.multiply(t)).abs();
}
return t;
}
public static void main(String[] args) {
if (args.length != 1) {
System.out.println("Usage: java NewtonSqrt <number>");
return;
}
BigDecimal c = new BigDecimal(args[0]);
BigDecimal tolerance = new BigDecimal("1E-10"); // 误差限
BigDecimal sqrt = sqrt(c, tolerance);
System.out.println(sqrt);
}
}
注意,这里使用了 BigDecimal 类来进行高精度计算。如果输入的数字过大,可能会导致运算速度较慢。
阅读全文