任意精度的确切含义是什么?

时间:2012-08-23 09:41:46

标签: java biginteger arbitrary-precision

对于某些人来说这可能是一个非常简单的问题,但我想知道任意精度的含义,它出现在BigInteger的JavaDoc的第一行:

  

不可变任意精度整数。

2 个答案:

答案 0 :(得分:7)

术语固定精度表示内部表示中仅保留一定数量的有效数字。这意味着您将无法表示每个整数,其幅度大于某个阈值。

使用任意精度整数,整数可以根据需要大小(“任意大”),并且库将所有数字保持为最低有效单位。 (这显然受到计算机内存量的限制。)

答案 1 :(得分:6)

这意味着BigInteger使用尽可能多的空间来保存整个值。

int为例。它具有固定的位数。这样,您可以在-2,147,483,6482,147,483,647(包括)之间保存值。因此它是固定精度类型,而不是任意精度类型。它不能存储超出此范围的值。

使用BigInteger,您没有遇到这个问题,因为一旦分配的位不足以存储确切的值,BigInteger只会添加一些位,以便它可以再次处理该值。

任意实际上并非如此,因为只有有限的内存可用,因此存在限制。该限制不是由BigInteger类给出的,而是由环境(VM /硬件/ OS)给出的。