7-4 jmu-Java-01入门-开根号 --笔记篇

题目

使用逐步逼近法对给定数值x求开根号。

逐步逼近法说明:从0开始逐步累加步长值。

步长=0.0001,epsilon(误差)=0.0001

循环继续的条件:

平方值<x 且 |x-平方值| > epsilon

###说明与参考

数值输出保留6位小数,使用System.out.printf("%.6f\n")

求平方,参考Math.pow函数。

输入值<0时,返回Double.NaN

输入格式:

任意数值

输出格式:

对每一组输入,在一行中输出其开根号。保留6位小数

c 复制代码
输入样例:
-1
0
0.5
0.36
1
6
100
131
输出样例:
NaN
0.000000
0.707100
0.600000
1.000000
2.449500
10.000000
11.445600

代码

java 复制代码
import java.util.*;

public class Main {

    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()){
            double k=in.nextDouble();
            if (k>0)
            {
                double m=0;
                while (m*m<k&&Math.abs(k-m*m)>0.0001) m+=0.0001;
                System.out.printf("%.6f\n",m);
            }else if (k==0){
                System.out.printf("%.6f\n",0.0);
            }else{
                System.out.printf("NaN\n");
            }
        }
    }
}

笔记

  1. while (mm<k&&Math.abs(k-mm)>0.0001) m+=0.0001;: 这是一个循环,它会一直尝试增加一个数(m),直到该数的平方大于等于输入的数,并且该数的平方与输入的数的差的绝对值小于0.0001。
  2. 这里特地把k==0的情况列出来的,为了铭记%f 不能用整数0
相关推荐
p***q7844 分钟前
【保姆级教程】apache-tomcat的安装配置教程
java·tomcat·apache
周杰伦fans1 小时前
C# 中的**享元工厂**模式
开发语言·数据库·c#
历程里程碑1 小时前
各种排序法大全
c语言·数据结构·笔记·算法·排序算法
2501_941148611 小时前
C++实时数据处理实战:多线程与异步IO结合高性能代码解析
java·后端·struts
u***u6851 小时前
C++在系统中的异常处理
java·开发语言·c++
少许极端1 小时前
算法奇妙屋(十四)-简单多状态dp问题
算法·动态规划·图解算法·简单多状态dp·打家劫舍问题·买卖股票问题全解
空空kkk1 小时前
SpringMVC——拦截器
java·数据库·spring·拦截器
爱学测试的雨果1 小时前
收藏!软件测试面试题
开发语言·面试·职场和发展
文涛是个小白呀1 小时前
Java集合大调研
java·学习·链表·面试
hd51cc1 小时前
MFC多线程学习笔记三:线程间的通信
笔记·学习