您的位置:首页 > 大数据

HW—可怕的阶乘n!__注意大数据函数的使用BigInteger

2015-08-16 21:46 375 查看

java.math.BigInteger系列教程(四)BigInteger的诞生原因

为什么java里面要出现BigInteger类型呢?相信很多人有这个疑问,其实原因很简单,它可以表达更大范围的数值,远远比long表示的最大值还要大的多数。在整数类型里面,long可以表达最大值,如下所示:

1
2
3
4
5
6
7

public class Test
{
public static void main(String[] args)
{
System.out.println(Long.MAX_VALUE);
}
}

结果为:9223372036854775807
  而使用BigInteger,则可以表示更大的值,理论上只要你内存足够大,就能,如下面的例子:

1
2
3
4
5
6
7
8
9
10

public class Test
{
public static void main(String[] args)
{
BigInteger a= BigInteger.valueOf(9223372036854775807L);
BigInteger b= BigInteger.valueOf(9223372036854775807L);
BigInteger c=a.add(b);
System.out.println(c.toString());
}
}

结果为:18446744073709551614

  因为BigInteger没有重载"+","-","*",“/”, “%”这五个运算操作符,是不能直接进行数据运算的,需要调用它的相应方法:add,subtract,multiply,divide,remainder。



Java版本的是:

package t0816;

import java.math.BigInteger;
public final class BigN {
public static BigInteger  multiply(BigInteger m,int n) {
BigInteger sn = new BigInteger(Integer.toString(n));
BigInteger sqy = m.multiply(sn);  //大数据的加减乘除用的是add、subtract、multiply、divide,remainder。
return sqy;
}
public static String  calcNN(int n) {
if(n >= 0){
BigInteger one = new BigInteger(Integer.toString(1)); //1的初始化
for(int i=1;i <= n;i++)     {
one = multiply(one,i);  //调用上面的累成函数;大数据的累成
}
return one.toString();
}
else   return null;
}

public static void main(String arg[]) {     //主函数
System.out.println(calcNN(13));    //这里直接装的13;
}
}


输出:6227020800
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: