Java编程实现Math.sqart(开根号)方法

本文探讨了Java中Math.sqrt()方法与自定义开根号方法的区别,特别是在处理负数时的行为。Math.sqrt()在遇到负数时返回NaN并继续程序执行,而自定义的squrt()方法则会通过调用System.exit(0)结束Java虚拟机。这种方法在处理错误时存在缺陷。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public static double squrt(double b){
double result=0;
if(b<1&&b>0){
double lower=b;
double upper=1;
int time=0;
while(true){

if((lower+upper)*(lower+upper)/4==b){
return (lower+upper)/2;
}else if((lower+upper)*(lower+upper)/4>b){
upper=(lower+upper)/2;
}else{
lower=(lower+upper)/2;
}
time++;
if(time>1000){
result=(lower+upper)/2;
break;
}
}
}else if(b>=1){
double lower=1;
double upper=b;
int time=0;
while(true){

if((lower+upper)*(lower+upper)/4==b){
return (lower+upper)/2;
}else if((lower+upper)*(lower+upper)/4>b){
upper=(lower+upper)/2;
}else{
lower=(lower+upper)/2;
}
time++;
if(time>1000){
result=(lower+upper)/2;
break;
}
}
}else if(b==0){
result=0;
}else{
System.out.println("NaN");
System.exit(0);
}
return result;

}

以上定义的方法是开根号的代码实现

public static void main(String[] args) {

                System.out.println(Math.sqart(11111));
System.out.println(Mathe.squrt(11111));
System.out.println("程序没结束");

}

在主方法里调用此方法基本与调用工具类Math.sqart方法相同

但是在在传入负数时

执行Math.sart方法时

public static void main(String[] args) {
System.out.println(Math.sqrt(-1));
System.out.println("程序没结束");

}

打印结果为:

NaN
程序没结束

而执行我写的方法Mathe.squrt

public static void main(String[] args) {
System.out.println(Mathe.squrt(-1));
System.out.println("程序没结束");

}

的结果为:

NaN

我的理解:

查看sqrt方法的源码是调用的本地方法,他传入负数的直接打印NaN,结束本地方法,继续执行JAVA程序

而本文所写的方法在传入负数时,直接调用System.exit(0),结束JAVA虚拟机,不会执行后面的代码

有些缺陷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值