这是一个 Java 代码,它要求输入一个数字,然后在不使用 Math.sqrt() 方法的情况下打印其平方根:
import java.util.Random;
import java.io.*;
public class Square {
public static void main(String[] args) throws IOException {
final double TOL = 0.5E-15;
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader input = new BufferedReader(reader);
System.out.print("Enter a number to get the aquare of it: ");
double n = new Double(input.readLine()).doubleValue();
Random random = new Random();
double x = random.nextDouble();
do {
x = (x+n/x)/2;
} while(Math.abs(x*x-n)>TOL*2*x);
System.out.println("sqrt(" + n + ") = " + x);
}
}
请在您的计算机上运行它并测试几个数字。对于低于 30.1 的数字,它会快速运行并计算平方根。但是当您输入 30.2 或更大的数字时,不会计算平方根(至少在可行的等待情况下)!这种行为有什么有趣的解释吗?!