我正在考虑使用BigInteger类来存储10-1000 MB范围内的数字。有任何人对此有经验吗?极大数字是否有实际或隐含的限制?
答案 0 :(得分:10)
嗯,documentation for BigInteger表示只要你有足够的内存来处理它,数字就可以是任意大小。
BigInteger上的常规操作(加,减,乘等)比常规数值类型慢得多(根据某些测试至少50倍),但你可能会接受它。
此外,您必须记住BigInteger类型是不可变的,因此对它的操作将产生一个新实例。因此,添加两个10MB的数字将创建一个新的10MB数字。它不会修改现有实例。这可能会影响您构建代码的方式。
唯一的实际限制是计算机上可用的内存量以及程序可用的内存量。对于32位进程,这应该至少为3GB,对于64位进程应该更多,因此您应该能够使用所需的数字。
答案 1 :(得分:4)
还存在计算限制。我遇到了限制。
如果你乘以2个巨大的数字,计算它们所需的时间,加上一些开销。因此,如果您对比之前的计算大7倍的数字进行乘法运算,则需要大约50倍的时间。如果你将它们放大1000倍,那么它将花费大约1000000+倍。
开始做那个循环,你会发现程序可能永远不会在你的一生中完成