开方在java中怎么计算_不使用java JDK已有的API实现任意数字的开方
在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中常见的排序
浅谈java中常见的排序 学过java的人都知道,排序这一部分初次接触感觉还是有点难以理解,很多地方也会用到.然而,在java中常见的排序方法:冒泡排序,选择排序,插入排序等等.下面就让我们一起揭开他 ...
- java中^怎么用_^运算符在Java中做什么?
^(插入符号)运算符在Java中具有什么功能? 当我尝试这个: int a = 5^n; ...它给我: for n = 5, returns 0 for n = 4, returns 1 for n ...
- java 中的单元测试_浅谈Java 中的单元测试
单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...
- java中递归删除_浅谈Java中使用递归方法删除文件
要在Java中平台无关的方式下安全地删除一个非空目录,你还需要一个算法.该算法首先删除文件,然后再从目录树的底部由下至上地删除其中所有的目录. 只要简单地在目录中循环查找文件,再调用delete就可以 ...
- java 中的流_深入理解Java中的流(Stream)
首先,流是什么? 流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以"流"的方式进行.设备可以是文件,网络,内存等. 流具有方向性,至于是输入 ...
- java中为什么同步_如何在Java中同步工作
如何在Java中同步工作 首先, 这是一个示例 : public class Deadlock { static class Friend { private final String name; p ...
- java中gettext方法_深入理解Java中方法的参数传递机制
形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. ...
- 怎么在java中引用图片_如何使用Java(读/写)读取复制和粘贴图片?
在Java语言编程中,如何使用Java(读/写)读取复制和粘贴图片? 注意:需要访问网址:http://book2s.com/java/jar/o/opencv/download-opencv-3.2 ...
- java中parent结构_详解java中继承关系类加载顺序问题
详解java中继承关系类加载顺序问题 实例代码: /** * Created by fei on 2017/5/31. */ public class SonClass extends ParentC ...
最新文章
- python 归一化_几种归一化方法(Normalization Method)python实现
- 软件架构自学笔记-- 畅途亿级业务日志系统演变过程
- 菜鸟学Java(十一)——GET与POST
- Python-OpenCV学习 -- 台式机外接USB摄像头的视频读取
- 【spring boot】 禁用/关闭数据源/DataSource
- (计算机组成原理)第五章中央处理器-第四节1:CPU硬布线控制器的设计原理(逻辑表达式,微操作时序,电路设计)
- 【内网渗透】找到内网关键节点
- 安腾还是Power7——Unix服务器你该如何选?
- 轻松解决U盘拷贝文件时提示文件过大问题
- 带头结点的单链表的插入删除和遍历操作
- MTK Modem编译
- Python学习笔记—— python基础 1. 变量的输出
- GD32F450以太网(1):ETH 外设接口简介
- 考研常识-总结1(硕士、专硕;非全日制、全日制)
- online judge start_01
- ubuntu16.04中 vim8 backspace键删除功能失效
- Science fiction list
- 1144C C. Two Shuffled Sequences(优先队列和set的应用)
- 使用 Let's Encrypt 为 Zimbra-8.8.15 安装可信任的SSL证书
- SQL零基础入门学习(十一)