我只是想知道什么是最好的存储一个非常大的整数,如果有多个选项,它的优点和缺点与其他选项相比。
我想存储和使用此值:
116738484849595836625273748485838625252737485884625292837367283849484726373884848484636377473636252626736363636637373747
答案 0 :(得分:5)
对任意长度的整数使用BigInteger。
答案 1 :(得分:2)
使用具有预定义数学函数的BigInteger
形式java.math
包。
答案 2 :(得分:1)
如果仅针对整数,我建议您查看java.math.BigInteger
。
它具有String
的构造函数,使您可以使用任意(当然是内存有限)长度的整数并执行基本的代数运算。
但是:这也取决于你定义为“正常工作”。 也许只是构建一个该值的String也满足您的要求。
答案 3 :(得分:1)
如果您想根据其字符串表示分析数字,我会将其保留为字符串。使用BigInteger做同样的事情要困难得多。
public static void main(String... ignored) {
String s = "116738484849595836625273748485838625252737485884625292837367283849484726373884848484636377473636252626736363636637373747";
NavigableSet<String> set = new TreeSet<>();
for(int i=0;i<s.length();i++)
set.add(s.substring(i));
String prev = "", longest = "";
for (String t : set) {
int len = startMatchingLength(prev, t);
if (len > longest.length())
longest = t.substring(0, len);
prev = t;
}
System.out.println("Longest match was " + longest);
}
public static int startMatchingLength(String s, String t) {
for (int i = 0; i < s.length() && i < t.length();i++)
if (s.charAt(i) != t.charAt(i))
return i;
return Math.min(s.length(), t.length());
}
打印
Longest match was 25273748