概述
在java面试中,我们经常被要求,不使用java jdk自带的API来实现任意数字的开方实现,本文作者总结了下这个需求的实现方法,并将实现代码放上,供朋友们参考,不喜勿喷,谢谢。package com.demo.test;
import java.util.Scanner;
public class TestGen {
@SuppressWarnings("resource")
public static void main(String[] args) {
System.out.print("请输入你要开方的任意正数:t");
Scanner scanner1 = new Scanner(System.in);
double num = scanner1.nextDouble();
System.out.print("请输入你要开方允许的误差,不能小于0哦:t");
//可接受的结果误差
double error = scanner1.nextDouble();
// double error = 0.00000000000001;
String result = getGen(num, error);
System.out.println(result);
}
/**
* * 求任意数字的开方
*
* @param num
* 输入的任意数字
* @param error
* 可接受的结果误差
* @param isMin
* 是否小于1 ture 小于 false 大于1
* @return
*/
private static String getGen(double num, double error) {
if (num <= 0) {
return "只能输入正数。";
} else if (num == 1) {
return String.valueOf(num);
}
boolean isMin = num
String allResult = null;
double befor = 1;
double current = num;
double temp = 0;
while (true) {
temp = current;
current = (befor + current) / 2;
double result = current * current;
double currentErr = (result > num) ? (result - num)
: (num - result);
if (error >= currentErr) {
allResult = String.valueOf(current);
break;
} else {
if (isMin) {
if (result > num) {
befor = current;
current = temp;
}
} else {
if (result
befor = current;
current = temp;
}
}
}
}
return allResult;
}
}
上面的代码实现的主要思想是根据数值逼近思想中的中间值逼近的算法实现的,即每次都取两个数值之间的中间值,来不断缩小和想要求职的差距,进而不断缩小误差,直到符合误差需求。
最后
以上就是敏感小蜜蜂为你收集整理的开方在java中怎么计算_不使用java JDK已有的API实现任意数字的开方的全部内容,希望文章能够帮你解决开方在java中怎么计算_不使用java JDK已有的API实现任意数字的开方所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复