java 中开方怎么办

java 中开方怎么办,第1张

对于开平方,可以使用数学工具包java.lang.Math类中的sqrt函数, 而对于开任意次方可以借助Math类中的pow函数完成

调用格式如下:

Math.sqrt(2.0)//对2开平方

Math.pow(9.0, 1.0/3.0)//对9开三次方,开其他次方依次类推

sqrt函数原型:

public static double sqrt(double a)

作用是返回正确舍入的double值的正平方根

参数a的各种取值得到的结果:

1、如果参数是 NaN 或小于零,那么结果是 NaN。

2、如果参数是正无穷大,那么结果就是正无穷大。

3、如果参数是正零或负零,那么结果与参数相同。

否则,结果是最接近该参数值的真实数学平方根的 double 值。

pow函数原型

public static double pow(double a, double b)

作用是返回a的b次幂,详情请参考java api。

使用java.lang.Math类的sqrt(double)方法。 方法详解: public static double sqrt(double a) 返回正确舍入的 double 值的正平方根。

Math是在java.lang这个包中的所以可以直接在程序中用这个Math类直接在程序中这样就可以了: 

double n 

n=Math.sqrt(9)//比如9是要平方的数

示例见下图:

结果是:

扩展资料:

平方根计算:

1、功 能: 一个非负实数的平方根

2、函数原型: 在VC6.0中的math.h头文件的函数原型为double sqrt(double)

3、说明:sqrt系Square Root Calculations(平方根计算),通过这种运算可以考验CPU的浮点能力。

参考资料:百度百科-平方根计算

这是我应聘时写的算法代码,运行成功:

//这是用java编写的一个求2的平方根的程序,精确度可通过修改weishu参数来改变

public class app

{ //用二分法求2的平方根

public static void main(String args[])

{

int a[],b[],s[],d[],c[],ss[]

int i,j,k

a=new int[1000]

b=new int[1000]

s=new int[1000]

d=new int[1000]

c=new int[1000]

ss=new int[1000]

boolean jingque

jingque=true

a[0]=b[0]=2

a[2]=b[2]=1

a[1]=4

b[1]=5

int weishu=200//定义循环次数

for(i=0i<1000i++)

s[i]=0

for(k=0k<weishuk++)

{

hanshucheng.cheng(b,b,s)

j=s[0]

while (s[j]>=2)

{

hanshuadd.add(a,b,c)

hanshuchu.chu(d,c)

hanshucopy.copy(ss,b)

hanshucopy.copy(b,d)

hanshucheng.cheng(b,b,s)

j=s[0]

// for(i=0i<=s[0]i++)

//System.out.println("s["+i+"]="+s[i])

}

hanshucopy.copy(a,b)

hanshucopy.copy(b,ss)

}

for(i=a[0]i>=1i--)

System.out.print(a[i])

System.out.print("左边计算到"+a[0]+"位\n")

for(i=b[0]i>=1i--)

System.out.print(b[i])

System.out.print("右边计算到"+b[0]+"位\n")

for(i=a[0],j=b[0]jingque==truei--,j--)

if(a[i]==b[j])

System.out.print(a[i])

else

jingque=false

System.out.print("精确到"+(a[0]-i-1)+"位\n")

}

}

class hanshucheng

{

public static void cheng( int a[],int b[],int s[])//定义两数相乘的函数

{

int flag=0,flag1=0

int number=b[0]

int c[]=new int[1000]

int i,j,k,u

for(int i1=0i1<1000i1++)

s[i1]=0

for(i=1i<=numberi++)

{

for(int i1=0i1<1000i1++)

c[i1]=0

for(j=i,k=1j<number+ij++,k++)

{

c[j]=(a[k]*b[i]+flag)%10

flag=(a[k]*b[i]+flag)/10

}

if (flag!=0)

{

c[j]=flag

flag=0

j=j+1

}

c[0]=j-1

//for(k=1k<=c[0]k++)

//System.out.println("c="+c[k])

for(k=1k<=c[0]k++)

{ u=s[k]

s[k]=(u+c[k]+flag1)%10

flag1=(u+c[k]+flag1)/10

}

if(flag1!=0)

{

s[k]=flag1

k=k+1

flag1=0

}

s[0]=k-1

// for(k=0k<=s[0]k++)

//System.out.println(s[k])

}

}

}

class hanshuadd

{

public static void add(int a[],int b[],int c[])//定义两数相加的函数

{

int flag=0int i,j,k

int a1[]=new int[1000]

for(i=1i<=b[0]i++)

a1[i]=0

for(j=b[0]-a[0]+1,k=1j<=b[0]j++,k++)

a1[j]=a[k]

//for(k=0k<=jk++)

//System.out.println("a1="+a1[k])

for(i=1i<=b[0]i++)

{

c[i]=(a1[i]+b[i]+flag)%10

flag=(a1[i]+b[i]+flag)/10

}

if(flag!=0)

{

c[i]=flag

i=i+1

flag=0

}

c[0]=i-1

}

}

class hanshuchu

{

public static void chu(int d[],int a[])//定义任一数除以2的函数

{

int flag=0,i

for(i=a[0]i>=1i--)

{

d[i+1]=(flag*10+a[i])/2

flag=(flag*10+a[i])%2

}

if(flag!=0)

d[1]=5

if(d[1]==0)

for(i=1i<=a[0]+1i++)

d[i]=d[i+1]

d[i]=0

d[0]=a[0]+1

}

}

class hanshucopy

{

public static void copy(int a[],int b[])//定义

{

int i

for(i=0i<=b[0]i++)

a[i]=b[i]

while (i<1000)

a[i++]=0

}

}

http://hi.baidu.com/51gamer/blog/item/11ddb1823a4d9da50df4d288.html


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8043411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存