我一直在寻找相当长的一段时间,而且我几乎没有发现BigInteger
实际上如何保持其数字。它们是一系列字符吗?别的什么?如何将数据转换为BigInteger
?
根据我的发现,我假设所有任意精度类,如BigInteger
和BigDecimal
,都将数据保存为字符数组。它是如何实际工作的?或者只是人们的猜测?
我问,因为我一直在努力实现BigInteger
这样的事情,但我无法弄清楚如何保持大于Long.MAX_VALUE
的数字(我不记得了实际数字)。
提前致谢。
答案 0 :(得分:21)
使用int[]
来自消息来源:
/**
* The magnitude of this BigInteger, in <i>big-endian</i> order: the
* zeroth element of this array is the most-significant int of the
* magnitude. The magnitude must be "minimal" in that the most-significant
* int ({@code mag[0]}) must be non-zero. This is necessary to
* ensure that there is exactly one representation for each BigInteger
* value. Note that this implies that the BigInteger zero has a
* zero-length mag array.
*/
final int[] mag;
答案 1 :(得分:-1)
表示数字的最常用方法是使用位置表示法系统。使用数字写入数字以表示指定基数的倍数。我们每天最熟悉和使用的基础是基数10.当我们在基数10中写入数字12345时,它实际上意味着:12345 = 1 * 10 ^ 4 + 2 * 10 ^ 3 + 3 * 10 ^ 2 + 4 * 10 ^ 1 + 5 * 10 ^ 0
答案 2 :(得分:-1)
有很多方法可以表示大整数。字符串很简单, 任何曾经用铅笔和纸做过长时间划分的人都可以写 算术程序。