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
相关推荐
BLOB_1010013 分钟前
关于懒人复制idea项目的坑
java·ide·intellij-idea
hans汉斯5 分钟前
基于改进YOLOv11n的无人机红外目标检测算法
大数据·数据库·人工智能·算法·yolo·目标检测·无人机
Moe4886 分钟前
Spring Boot 自动配置核心:AutoConfigurationImportSelector 深度解析
java·后端·设计模式
郝学胜-神的一滴19 分钟前
Effective Python 第52条:用subprocess模块优雅管理子进程
linux·服务器·开发语言·python
星轨初途23 分钟前
数据结构二叉树之链式结构(3)(下)
c语言·网络·数据结构·经验分享·笔记·后端
valan liya29 分钟前
C++list
开发语言·数据结构·c++·list
Swift社区33 分钟前
LeetCode 431 - 将 N 叉树编码成二叉树
算法·leetcode·职场和发展
6***x54540 分钟前
Java设计模式之策略模式
java·设计模式·策略模式
Le1Yu40 分钟前
订单取消功能(退款功能、策略模式、定时任务)
开发语言
章鱼哥73043 分钟前
Java 策略模式 + 聚合对象:实现多模块的统计与聚合,快速扩展的实战
java·开发语言·策略模式