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
相关推荐
Riemann~~几秒前
ros2写一个可以修改参数的node
开发语言·python·ros2·机器人系统
无巧不成书02181 分钟前
Java核心技术全景解析:从白皮书到实战踩坑
java·开发语言
Roy_Sashulin3 分钟前
基于AI的Java编程平台
java·开发语言·人工智能·sashulin·deepseek
周万宁.FoBJ7 分钟前
vue源码讲解之 reactive解析(仅proxy部分)
开发语言·javascript·ecmascript
旖-旎8 分钟前
二分查找(山脉数组的峰顶索引)(5)
c++·算法·leetcode·二分查找·力扣·双指针
大傻^10 分钟前
Spring AI Alibaba 企业级实战:从0到1构建智能客服系统
java·人工智能·后端·spring·springaialibaba
阿贵---12 分钟前
单元测试在C++项目中的实践
开发语言·c++·算法
进击的小头12 分钟前
第14篇:MPC控制案例——无人机高度控制
python·算法·无人机
贼爱学习的小黄15 分钟前
NC BIP增加按钮
java
短剑重铸之日15 分钟前
《ShardingSphere解读》11 解析引擎:SQL 解析流程应该包括哪些核心阶段?(上)
java·后端·spring·shardingsphere·分库分表