java中开方
❶ java中,如何对大数开根号啊!
java中对于大数BigInteger,BigDecimal开根号没有提供函数,可以参考以下实现方法:
import java.math.BigDecimal;
import java.math.BigInteger;
public class BigSquareRoot {
final static BigInteger HUNDRED = BigInteger.valueOf(100);
public static BigDecimal sqrt(BigDecimal number, int scale, int roundingMode) {
if (number.compareTo(BigDecimal.ZERO) < 0)
throw new ArithmeticException("sqrt with negative");
BigInteger integer = number.toBigInteger();
StringBuffer sb = new StringBuffer();
String strInt = integer.toString();
int lenInt = strInt.length();
if (lenInt % 2 != 0) {
strInt = '0' + strInt;
lenInt++;
}
BigInteger res = BigInteger.ZERO;
BigInteger rem = BigInteger.ZERO;
for (int i = 0; i < lenInt / 2; i++) {
res = res.multiply(BigInteger.TEN);
rem = rem.multiply(HUNDRED);
BigInteger temp = new BigInteger(strInt.substring(i * 2, i * 2 + 2));
rem = rem.add(temp);
BigInteger j = BigInteger.TEN;
while (j.compareTo(BigInteger.ZERO) > 0) {
j = j.subtract(BigInteger.ONE);
if (((res.add(j)).multiply(j)).compareTo(rem) <= 0) {
break;
}
}
res = res.add(j);
rem = rem.subtract(res.multiply(j));
res = res.add(j);
sb.append(j);
}
sb.append('.');
BigDecimal fraction = number.subtract(number.setScale(0, BigDecimal.ROUND_DOWN));
int fracLen = (fraction.scale() + 1) / 2;
fraction = fraction.movePointRight(fracLen * 2);
String strFrac = fraction.toPlainString();
for (int i = 0; i <= scale; i++) {
res = res.multiply(BigInteger.TEN);
rem = rem.multiply(HUNDRED);
if (i < fracLen) {
BigInteger temp = new BigInteger(strFrac.substring(i * 2, i * 2 + 2));
rem = rem.add(temp);
}
BigInteger j = BigInteger.TEN;
while (j.compareTo(BigInteger.ZERO) > 0) {
j = j.subtract(BigInteger.ONE);
if (((res.add(j)).multiply(j)).compareTo(rem) <= 0) {
break;
}
}
res = res.add(j);
rem = rem.subtract(res.multiply(j));
res = res.add(j);
sb.append(j);
}
return new BigDecimal(sb.toString()).setScale(scale, roundingMode);
}
public static BigDecimal sqrt(BigDecimal number, int scale) {
return sqrt(number, scale, BigDecimal.ROUND_HALF_UP);
}
public static BigDecimal sqrt(BigDecimal number) {
int scale = number.scale() * 2;
if (scale < 50)
scale = 50;
return sqrt(number, scale, BigDecimal.ROUND_HALF_UP);
}
public static void main(String args[]) {
BigDecimal num = new BigDecimal("6510354513.6564897413514568413");
long time = System.nanoTime();
BigDecimal root = sqrt(num, 1000);
time = System.nanoTime() - time;
System.out.println(root);
System.out.println(root.pow(2));
System.out.println(time);
}
}
执行结果:
80686.76406162506362881367
6510354513.
46726188
❷ java中如何对一个数开根号
java 中对一个数开根号可以使用系统提供的Math.sqrt() 函数进行操作
例:
Math.sqrt(3);//得到结果就是3
❸ Java中求平方以及立方的函数式什么
Math.pow(x,2)就是平方。Math.pow(x,3)就是立方。
Math.pow(底数,几次方),如:double a=2.0,double b=3.0,double c=Math.pow(a,b),就是2的三次方是多少;c最终为8。
(3)java中开方扩展阅读:
Math.pow()函数返回基数(base)的指数(exponent)次幂,即base的exponent次幂。Java是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。
Java编程工具如下:
1、Eclipse:一个开放源代码的、基于Java的可扩展开发平台 。
2、NetBeans:开放源码的Java集成开发环境,适用于各种客户机和Web应用。
3、IntelliJ IDEA:在代码自动提示、代码分析等方面的具有很好的功能。
4、MyEclipse:由Genuitec公司开发的一款商业化软件,是应用比较广泛的Java应用程序集成开发环境 。
5、EditPlus:如果正确配置Java的编译器“Javac”以及解释器“Java”后,可直接使用EditPlus编译执行Java程序 。
❹ 关于java开平方函数
你导入错了呗,sqrt()在lang的Math包里。lang包是默认的,sqrt()方法可能不止一个,对应你那个参数可能就是math包里那个,当然要声明
❺ java怎么实现开3次方
用Math.pow(double a,double b)方法,方法的参数是被开放数和1/3就可以了。
❻ java语言如何求平方根
开平方用math.sqrt(double n);就可以了,n就是要被开方的数。 扩展下,如果要给m开n次方就用 java.lang.StrictMath.pow(m,1.0/n); 因为都是用的double类型的数字,所以会有误差,比如 m=64;n=3,y=java.lang.StrictMath.pow(m,1.0/n); 这样如果System.out.println(y);y就是3.9999999999999996 可以用下面的函数吧结果格式化下,格式化成整数 import java.text.DecimalFormat; public class Test82 { public static void main(String[] args) { double y=0; double x=64; int n=3;
y=java.lang.StrictMath.pow(x,1.0/n); DecimalFormat bd=new DecimalFormat("########");//把double四舍五入取整 System.out.println(bd.format(y)); } }
❼ java语言如何求平方根
使用java.lang.Math类的sqrt(double)方法。 方法详解: public static double sqrt(double a) 返回正确舍入的 double 值的正平方根。
Math是在java.lang这个包中的所以可以直接在程序中用这个Math类直接在程序中这样就可以了:
double n;
n=Math.sqrt(9);//比如9是要平方的数
示例见下图:
(7)java中开方扩展阅读:
平方根计算:
1、功 能: 一个非负实数的平方根
2、函数原型: 在VC6.0中的math.h头文件的函数原型为double sqrt(double);
3、说明:sqrt系Square Root Calculations(平方根计算),通过这种运算可以考验CPU的浮点能力。