Java平方根计算器?

-4 java square-root

好的,我是java的初学者,通过网站和书籍自学.我尝试了一个带有for循环和while循环的简单平方根计算器(我已经包含了我在下面尝试的内容).可悲的是,当我输入一个数字时,我的所有代码都会终止.任何帮助,将不胜感激!

import java.util.Scanner;

public class The2RootProdject {
    public static void main(String args[]) {

        Scanner input = new Scanner(System.in);
        double rootIt = input.nextDouble();
        double dummy = 0.0000000;

        while (dummy != dummy * dummy) {
            dummy += 0.0000001;
            if (rootIt == dummy * dummy) {
                System.out.println("the squar root of " + rootIt + " is "
                        + (dummy * dummy));
            }

        }

    }
}
Run Code Online (Sandbox Code Playgroud)

Fog*_*Day 6

你有几个问题:

1)逻辑错误:0 == 0*0

<=这意味着while (dummy != dummy * dummy) {..}永远不会是不真实的,你甚至都不会进入循环

2)浮点数是不精确的,因此您的算法(依赖于"==")可能无论如何都不起作用

在这里查看有关浮点不精确的更多详细信息:

http://www.lahey.com/float.htm

对于任何语言都是如此- 您的平方根算法必须考虑到这一点.