对于某些人来说这可能是一个非常简单的问题,但我想知道任意精度的含义,它出现在BigInteger的JavaDoc的第一行:
不可变任意精度整数。
答案 0 :(得分:7)
术语固定精度表示内部表示中仅保留一定数量的有效数字。这意味着您将无法表示每个整数,其幅度大于某个阈值。
使用任意精度整数,整数可以根据需要大小(“任意大”),并且库将所有数字保持为最低有效单位。 (这显然受到计算机内存量的限制。)
答案 1 :(得分:6)
这意味着BigInteger
使用尽可能多的空间来保存整个值。
以int
为例。它具有固定的位数。这样,您可以在-2,147,483,648
和2,147,483,647
(包括)之间保存值。因此它是固定精度类型,而不是任意精度类型。它不能存储超出此范围的值。
使用BigInteger
,您没有遇到这个问题,因为一旦分配的位不足以存储确切的值,BigInteger
只会添加一些位,以便它可以再次处理该值。
任意实际上并非如此,因为只有有限的内存可用,因此存在限制。该限制不是由BigInteger
类给出的,而是由环境(VM /硬件/ OS)给出的。