第一天面试,第一题就让我很疑惑,题是这样的:
long a = 2^64-1;
那么a*a怎么保存;
回来冥思苦想,查资料,一直都没有找到答案,最后整合了一下,终于解决了。
Long a = Long.MAX_VALUE;
String b = String.valueOf(a);
BigInteger x = new BigInteger(b);
BigInteger y = x.multiply(x);
System.out.println(y);
结果就出来了,可以使用BigInteger来进行存储,再使用相应的方法就解决了。
总结一下BigInteger的基本运算:
public void testDemo() {
//基本运算:add(),subtract(),multiply(),divide(),mod(),remainder(),pow(),abs(),negate()
BigInteger a = new BigInteger("13");10
BigInteger b = new BigInteger("4");6
int n = 3;
//1.加
BigInteger num1 = a.add(b); //答案:16
//2.减
BigInteger num2 = a.subtract(b); //答案:4
//3.乘
BigInteger num3 = a.multiply(b); //答案:60
//4.除
BigInteger num4 = a.divide(b); //答案:1
//5.取模(需 b > 0,否则出现异常:ArithmeticException("BigInteger: modulus not positive"))
BigInteger num5 = a.mod(b); //答案:4
//6.求余
BigInteger num6 = a.remainder(b); //答案:4
//7.平方(需 n >= 0,否则出现异常:ArithmeticException("Negative exponent"))
BigInteger num7 = a.pow(n); //答案:1000
//8.取绝对值
BigInteger num8 = a.abs(); //答案:10
//9.取相反数
BigInteger num9 = a.negate(); //答案:-10
}
这里要提到一点,BigInteger使用时需要构造一个BigInteger 对象,也就是使用new关键字。
还是知识储备不够,今天还是学到了一些关于BigInteger的相关知识。