-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)
你有几个问题:
1)逻辑错误:0 == 0*0
<=这意味着while (dummy != dummy * dummy) {..}永远不会是不真实的,你甚至都不会进入循环
2)浮点数是不精确的,因此您的算法(依赖于"==")可能无论如何都不起作用
在这里查看有关浮点不精确的更多详细信息:
http://www.lahey.com/float.htm
对于任何语言都是如此- 您的平方根算法必须考虑到这一点.
| 归档时间: |
|
| 查看次数: |
3678 次 |
| 最近记录: |