这是可用于计算数字平方根的公式。
result=(guess+(number/guess))/2;
例如,我需要求出 9 的平方根。首先,我需要进行猜测。对于这个,它是 6。虽然我知道 9 的平方根是 3,但我还是选择了 6 来展示程序应该如何工作。
这使得...
result=(6+(9/6))/2 which is equal to 3.75.
要获得 9 的实际平方根,我需要将结果作为新的猜测。程序应该继续...
result=(3.75+(9/3.75))/2 which is equal to 3.075.
这个过程要一直持续到结果和结果差为0之后,例如
result=(3+(9/3))/2 is always equal to 3.
当result的值传给guess时,下一个结果也会是3,也就是说3是9的平方根。
这是我的代码:
package javaPackage;
public class SquareRoot {
public static void main(String[] args) {
calcRoot();
}
public static void calcRoot(){
double num=9;
double guess=6;
double result=0;
while(Math.abs(guess-ans)!=0){
result=(guess+(num/guess))/2;
guess=result;
}
System.out.print(result);
}
}
输出
3.75
我的问题是我无法将结果的值与之前的结果进行比较。由于猜测等于结果,程序立即因为猜测和结果已经相等。我该如何解决?
最佳答案
只需交换 while 循环中的两个语句(以及避免被零除的初始化):
public static void calcRoot(){
double num=9;
double guess=0;
double result=6;
while(Math.abs(guess-result)!=0){
guess=result;
result=(guess+(num/guess))/2;
}
System.out.print(result);
}
诀窍是在执行测试时让旧值仍在 guess
中,而新值在 result
中。
并且您不应该测试 != 0
,由于舍入误差,这可能无法实现。更好地测试一些小值 >= 1e-7
关于java - 创建一个不使用 Math.sqrt 计算数字平方根的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35013004/