Loops 在特定的小数位数后停止循环
我有一个不用Math.sqrt方法计算数字平方根的程序。我做了这个,但是。。。。。如果数字不是一个完美的正方形,循环将一直正确地进行,在基本java中,如何使循环在小数位数后停止: 谢谢大家!Loops 在特定的小数位数后停止循环,loops,numbers,double,square-root,Loops,Numbers,Double,Square Root,我有一个不用Math.sqrt方法计算数字平方根的程序。我做了这个,但是。。。。。如果数字不是一个完美的正方形,循环将一直正确地进行,在基本java中,如何使循环在小数位数后停止: 谢谢大家! import java.util.Scanner; public class SquareRootMethod { public static void main(String[] args) { // TODO Auto-generated method stub Scanner s
import java.util.Scanner;
public class SquareRootMethod {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("Please enter a number to square root: ");
double Number = sc.nextInt();
double Answer = FindSquareRoot(Number);
System.out.println(Answer);
}
public static double FindSquareRoot(double NumberToRoot)
{
double Guess = NumberToRoot;
double GuessAmmount = NumberToRoot;
do
{ GuessAmmount = GuessAmmount/2;
if (Guess*Guess >NumberToRoot);
{ Guess = Guess - GuessAmmount; }
if (Guess*Guess <NumberToRoot)
{Guess = Guess + GuessAmmount; }
}
while (Guess*Guess != NumberToRoot);
return Guess;
}
}在数字上设置某种精度如何
public static double findSquareRoot(double numberToRoot) {
double guess = numberToRoot;
double guessAmount = numberToRoot;
do {
guessAmount = guessAmount / 2;
if (guess * guess > numberToRoot) {
guess = guess - guessAmount;
}
if (guess * guess < numberToRoot) {
guess = guess + guessAmount;
}
} while (Math.abs((guess * guess) - numberToRoot) > 0.001);
return guess;
}
诀窍在while line上。谢谢!它起作用了。。。。。但是。。。我不知道这是怎么回事。你能解释一下while线的作用吗?基本上,你的问题是你的条件:猜猜看NumberToRoot对于某些数字永远不会为真,因此您将遇到一个无限循环。因此,我建议不需要精确的数字匹配,而是计算您想要的数字与guess*guess之间的差。如果根据定义的阈值,它们足够接近,那么我们很高兴并退出循环。这有意义吗?