我正在使用以下公式实现巴比伦方法来近似数字的平方根:n
nextGuess = (lastGuess + n / lastGuess) / 2;
所以当nextGuess
和lasGuess
几乎相同时,nextGuess
是近似的平方根。
我正在做的是检查是否nextGuess
并且lastGuess
小于非常小的数字,例如0.0001
我可以声称这nextGuess
是 的近似平方根n
。如果不nextGuess
成为lastGuess
。
那么我怎样才能以正确的方式实现呢?
我当前的代码:
public static void getApproximatedSquare(long n){
DecimalFormat decimalFormat = new DecimalFormat("#.####");
decimalFormat.setRoundingMode(RoundingMode.CEILING);
double lastGuess = 1, nextGuess;
nextGuess = (lastGuess + n / lastGuess) / 2;
Double init = 0.0001;
System.out.println(decimalFormat.format(init));
if (Double.valueOf(decimalFormat.format(nextGuess)) <= init)
//todo
}