Java 如何对能够';不能存储在一个变量中
在Java中,我希望能够对非常大的整数(不能长时间存储)执行操作,我该如何做呢 处理这一问题的最佳方法是什么,表现良好?我应该创建包含多个长变量的自己的数据类型吗 例如:Java 如何对能够';不能存储在一个变量中,java,integer,Java,Integer,在Java中,我希望能够对非常大的整数(不能长时间存储)执行操作,我该如何做呢 处理这一问题的最佳方法是什么,表现良好?我应该创建包含多个长变量的自己的数据类型吗 例如: public class MyBigInteger{ private long firstPart; private long secondPart; ... } public MyBigInteger add(long a, long b){ MyBigInteger res; /
public class MyBigInteger{
private long firstPart;
private long secondPart;
...
}
public MyBigInteger add(long a, long b){
MyBigInteger res;
// WHAT CAN I DO HERE, I guess I could do something with the >> << operators, but I've never used them!
return res;
}
公共类MyBigInteger{
私人长第一部分;
私人长第二部分;
...
}
公共MyBigInteger添加(长a、长b){
MyBigRes;
//在这里我能做些什么,我想我可以用>>做些什么。你应该检查java类。它完全满足你的需要。你有没有考虑过标准库类,它支持任意精度的整数?如果数字很长,我建议将它们存储在一个链接列表中(每个节点一个数字)或者一个文件(在这种情况下,io访问延迟会出现),然后进行一位一位的加法,这是我们在二年级时手动进行的。如果您确实需要高性能,BigInteger/BigDecimal不会剪切它。我使用了这个库,它对我来说非常有用。应该使用BigInteger.valueOf(long)而不是先转换成字符串,然后再转换成BigInteger。@ColinD我记不清所有的API:)哈哈,我喜欢你在使用“MyBigInteger”时如此接近,但到目前为止。如果您要编写自己的,您可以看看BigInteger是如何工作的,并根据您的需要对其进行定制。有趣的是,他们的Apinteger类扩展了Aportional和Apfloat。我想知道他们是如何通过这种层次结构实现高性能的。
import java.math.BigInteger;
public class BigIntegerTest {
public BigInteger add(long a, long b){
BigInteger big1 = new BigInteger(Long.toString(a));
BigInteger big2 = new BigInteger(Long.toString(b));
return big1.add(big2);
}
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(new BigIntegerTest().add(22342342424323423L, 234234234234234234L));
}
}