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
相关推荐
GUET_一路向前8 分钟前
【C语言防御性编程】if条件常量在前,变量在后
c语言·开发语言·if-else·防御性编程
曳渔9 分钟前
UDP/TCP套接字编程简单实战指南
java·开发语言·网络·网络协议·tcp/ip·udp
楼田莉子18 分钟前
C++算法题目分享:二叉搜索树相关的习题
数据结构·c++·学习·算法·leetcode·面试
三千道应用题26 分钟前
WPF&C#超市管理系统(6)订单详情、顾客注册、商品销售排行查询和库存提示、LiveChat报表
开发语言·c#·wpf
十一102432 分钟前
FX10/20 (CYUSB401X)开发笔记5 固件架构
笔记
hqxstudying41 分钟前
JAVA项目中邮件发送功能
java·开发语言·python·邮件
咪咪渝粮44 分钟前
JavaScript 中constructor 属性的指向异常问题
开发语言·javascript
最初的↘那颗心44 分钟前
Java HashMap深度解析:原理、实现与最佳实践
java·开发语言·面试·hashmap·八股文
小兔兔吃萝卜1 小时前
Spring 创建 Bean 的 8 种主要方式
java·后端·spring
FakeOccupational1 小时前
【电路笔记 通信】AXI4-Lite协议 FPGA实现 & Valid-Ready Handshake 握手协议
笔记·fpga开发