これは、数値を要求し、Math.sqrt() メソッドを使用せずにその平方根を出力する Java コードです。
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 以上の数値を入力すると、平方根は計算されません (少なくとも実行可能な待機では)! この動作について興味深い説明はありますか?!