如题

  • 初步审题的时候,想到的是暴力搜索:初步设置一个合法的种子,依次按照1e-2,1e-3,1e-4,1e-5,1e-6 , 1e-7...暴力搜索,额,就是太麻烦了。

打比赛搜索写多了,一看见题目就想到搜索。。。

  • 细想了一下,进行优化,二分估值法,貌似很合适.
  • 试了试,又调了数学库求值开根号2 ,没问题。

代码

package com.szs;
/**
* @description 要求不用数学库,求 sqrt (2)精确到小数点后 10位
* @author Administrator
*/
public class Main {
public static void main(String[] args) {
//手写二分估值
System.out.println(myCalculate(1.4,1.4,1.5));
//调用函数输出
System.out.println("----------sqrt= "+Math.sqrt(2.0));
}
//根号2约等于 1.414
private static double myCalculate(double ans,double low,double high) {
double mid = 0;
// 二分法,结束条件:差值小于等于1e-10即可
while(high-low>1e-10){ mid = (high+low)/2.0;
System.out.println("-----------mid= "+mid+" mid*mid= "+mid*mid);
//二分,逐步向中间值收拢
if(mid*mid <= 2.0){
low=mid;
}
else{
high=mid;
} } return mid;
} }

测试输出结果

-----------mid= 1.45  mid*mid= 2.1025
-----------mid= 1.4249999999999998 mid*mid= 2.0306249999999997
-----------mid= 1.4124999999999999 mid*mid= 1.9951562499999995
-----------mid= 1.4187499999999997 mid*mid= 2.0128515624999994
-----------mid= 1.415625 mid*mid= 2.0039941406249997
-----------mid= 1.4140625 mid*mid= 1.99957275390625
-----------mid= 1.41484375 mid*mid= 2.0017828369140624
-----------mid= 1.414453125 mid*mid= 2.0006776428222657
-----------mid= 1.4142578125 mid*mid= 2.0001251602172854
-----------mid= 1.41416015625 mid*mid= 1.999848947525024
-----------mid= 1.414208984375 mid*mid= 1.9999870514869693
-----------mid= 1.4142333984375002 mid*mid= 2.000056105256081
-----------mid= 1.4142211914062501 mid*mid= 2.0000215782225137
-----------mid= 1.414215087890625 mid*mid= 2.000004314817488
-----------mid= 1.4142120361328125 mid*mid= 1.9999956831429155
-----------mid= 1.4142135620117187 mid*mid= 1.9999999989778732
-----------mid= 1.4142143249511718 mid*mid= 2.0000021568970987
-----------mid= 1.4142139434814451 mid*mid= 2.0000010779373403
-----------mid= 1.414213752746582 mid*mid= 2.00000053845757
-----------mid= 1.4142136573791504 mid*mid= 2.000000268717713
-----------mid= 1.4142136096954345 mid*mid= 2.0000001338477906
-----------mid= 1.4142135858535765 mid*mid= 2.0000000664128312
-----------mid= 1.4142135739326476 mid*mid= 2.000000032695352
-----------mid= 1.4142135679721832 mid*mid= 2.000000015836613
-----------mid= 1.414213564991951 mid*mid= 2.0000000074072433
-----------mid= 1.4142135635018347 mid*mid= 2.0000000031925578
-----------mid= 1.4142135627567767 mid*mid= 2.0000000010852155
-----------mid= 1.4142135623842478 mid*mid= 2.0000000000315445
-----------mid= 1.4142135621979832 mid*mid= 1.9999999995047089
-----------mid= 1.4142135622911156 mid*mid= 1.999999999768127
1.4142135622911156
----调用数学库计算-----sqrt2= 1.4142135623730951

【云栖社区002-二分估值法】要求不用数学库,求 sqrt (2)精确到小数点后10位(Java版)的更多相关文章

  1. [SoapUI] 重载JSONComparator比对JSON Response,忽略小数点后几位,将科学计数法转换为普通数字进行比对,在错误信息中打印当前循环的case number及其他附加信息

    重载JSONComparator比对JSON Response,忽略小数点后几位,将科学计数法转换为普通数字进行比对,在错误信息中打印当前循环的case number及其他附加信息 package d ...

  2. 云栖社区用机器人爬CSDN的文章?

    这个云栖社区的文章https://yq.aliyun.com/ziliao/539322 这篇文章是我13年写的,不知道咋插入图片,见谅. 下面是我的文件记录 分享XAML图标的网站 原创 2013年 ...

  3. 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。

    我的博客即将入驻"云栖社区",诚邀技术同仁一同入驻. 博客搬家邀请码NXLZV

  4. Vue.js 2 vs Vue.js 3的实现 – 云栖社区

    Vue.js 2 vs Vue.js 3的实现 – 云栖社区 vue.js核心团队已经讨论过将在Vue3实现的变化.虽然API不会改变,但是数据响应机制(译者注:对数据改变的监听和通知)发生了变化.这 ...

  5. 阿里巴巴高可用技术专家襄玲:压测环境的设计和搭建 PTS - 襄玲 云栖社区 今天

    阿里巴巴高可用技术专家襄玲:压测环境的设计和搭建 PTS - 襄玲 云栖社区 今天

  6. 云栖社区 Tensorflow快餐教程

    云栖社区 Tensorflow快餐教程(1) - 30行代码搞定手写识别:https://yq.aliyun.com/articles/582122云栖社区 Tensorflow快餐教程(2) - 标 ...

  7. 【云栖社区001-数据结构】如何实现一个高效的单向链表逆序输出(Java版)

    如题 动手之前,发现自己很擅长用C语言来写链表. 不过,既然自己做的是Java开发,那么还是用Java实现这个算法吧:毕竟,以后的若干年里都差不多要跟Java打交道了. 于是,先将Java版的链表自学 ...

  8. Docker:云栖社区开源论题及Spark开源论题

    https://yq.aliyun.com/topic/78?spm=5176.8290451.656547.7.rMYhAF https://yq.aliyun.com/activity/155?u ...

  9. 阿里云栖社区dubbo 资源整理

    1.apache dubbo pdf git 地址:https://github.com/dubbo/awesome-dubbo/tree/master/slides/meetup/201905%40 ...

随机推荐

  1. 最常见的Java面试题及答案汇总(五)

    Java Web 64. jsp 和 servlet 有什么区别? jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器 ...

  2. k8s-job使用

    一.job特性 运行完成后退出,但是不会被删除,便于用户查看日志信息,了解任务完成的情况 删除job时产生的pod也会被一起删除 job中可以运行多个pod(任务执行多次),且可以并行运行缩短任务完成 ...

  3. php判断key是否存在的两种方法

    array_key_exists($key, $array) isset($array[$key]) 两种方式都可以!

  4. docker安装指定版本nexus3

    安装maven私服 1 下载指定版本的镜像  docker  pull  sonatype/nexus3:3.18.1 2 宿主机创建一个映射目录 ,并设置所有者 mkdir  -p  /app/ne ...

  5. 嵌入式02 STM32 实验03 时钟系统

    时钟系统是处理器的核心,所以认真学习时钟系统是必要的,有助于深入理解STM32. 由于STM32的外设很多,有的外设不需要太高的时钟频率,同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也越弱,所以对 ...

  6. php数组到json的转变

    今天做项目遇到个问题,一个接口,输出二维数组,前端说他要的数据格式是数组,而不是对象,就像上个数据一样,我当时就懵逼了,,,什么对象?我明明输出的是数组啊...然后我看了看我返回的json串,emmm ...

  7. C/C++語言 - 日常算法 - 蛇形填數

    C/C++語言 - 日常算法 - 蛇形填數 日期 : 2019-06-11 問題描述: 在n×n方阵里填入1,2,…,n×n,要求填成蛇形. 例如,n=4时方阵为: 10   11  12  1 9 ...

  8. go 学习笔记 ----资源自动回收

    在释放局部资源时, 可以用defer管理 Go语言版本基于defer的Mutex用法 func safeRead(Mutex *mu) []byte { mu.Lock() defer mu.Unlo ...

  9. git 学习笔记 --Bug分支

    软件开发中,bug就像家常便饭一样.有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除. 当你接到一个修复一 ...

  10. 【1】【leetcode-72 动态规划】 编辑距离

    (没思路,很典型,重要) 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 . 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替 ...