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
相关推荐
掉鱼的猫1 分钟前
Solon AOT & Native:三段式编译,从 Java 到原生可执行文件
java·云原生
Java内核笔记4 分钟前
容错能力进入 spring-core:Spring Boot 4 原生重试机制全解析
java·后端
未秃头的程序猿10 分钟前
虚拟线程上线一周后翻车了——pinning问题排查实录
java·后端·架构
VALENIAN瓦伦尼安教学设备11 分钟前
ASHOOTER激光对中仪如何通过颜色确定调整是否合适
数据库·嵌入式硬件·算法
货拉拉技术11 分钟前
重塑 Agent 度量衡:基于 LLM-as-a-Judge 的离线评估体系与实践
算法·设计模式
wuminyu12 分钟前
JDK21解决虚拟线程IO阻塞原理剖析
java·linux·c语言·jvm·c++
带刺的坐椅18 分钟前
Solon AOT & Native:三段式编译,从 Java 到原生可执行文件
java·aot·solon·native
车压25 分钟前
从“为什么”理解注意力机制
算法
程序员良辰26 分钟前
【TongWeb8】使用 Crontab 定时重启和检测 TongWeb 服务
java·中间件·tomcat
wabs66637 分钟前
关于哈希表【力扣15.三数之和的思考】
数据结构·算法·leetcode·散列表·哈希表·三数之和