BigInteger没有限制意味着什么?
我看着这个与大整数有关的stackoverflow问题 ,特别是我不明白这行(斜体字):
在BigInteger类中, 我没有任何限制,并且有一些有帮助的function,但是将漂亮的代码转换为BigInteger类,特别是在基本运算符不在那里工作,而且必须使用这个类的函数。
我不知道我在想什么,但是要expression一些没有限制的东西,你需要无限的记忆? 这里有什么窍门?
没有理论上的限制。 BigInteger
类分配尽可能多的内存,因为它需要保存所有的数据位。
但是,有一些实际的限制,由可用的内存决定。 还有更多的技术限制,尽pipe你不太可能受到影响:有些方法假设这些位可以通过int
索引来寻址,所以当你超过Integer.MAX_VALUE
位时,事情就会开始中断。
格雷厄姆对这个问题给出了很好的答案。 我只想补充一点,你必须小心使用valueOf
方法,因为它是使用long
参数创build的,所以最大值是Long.MAX_VALUE
。
是的,当我们需要非常大的数字和任意的精确度时使用它。 需要注意的是,“任意的”精度或数字的数字并不意味着“无限的”:这意味着在计算中精确数字或数字位数的数量受存储器和/或限定的精度的限制我们指定。
看看BigInteger类的源代码,你会看到(可以用NetBean完成)。 一个数字将被表示为一个int数组。 例如,10113将是[1,0,1,1,3](这不完全是BigInteger类所做的,只是大数模块工作的一个示例)。 所以,从技术上讲,唯一的限制就是你的记忆。