Подтвердить что ты не робот

Длинные против BigInteger

Я понимаю, что как java.lang.Long, так и java.math.BigInteger могут содержать очень большие натуральные числа.

Я также знаю значение Long max, но каково максимальное значение для BigInteger?

И помимо емкости, будет ли BigInteger работать лучше при работе с обычно большими целыми числами, которые все еще попадают в Long range?

Вопрос

Является единственным соображением: слишком ли велико значение для Long?

4b9b3361

Ответ 1

BigInteger способен удерживать гораздо большие числа, чем Long. BigInteger, похоже, способен удерживать (2 ^ 32) ^ Integer.MAX_VALUE, хотя это зависит от реализации (и, даже если это действительно неограничено в реализации, в конечном итоге будет предел физического ресурса) См. Объяснение здесь.

Диапазон Long составляет [-9,223,372,036,854,775,808, +9,223,372,036,854,775,807].

Long будет работать лучше, чем BigInteger, поэтому он действительно зависит от размера ваших значений. Если они все подпадают под значение Long max, нет смысла не использовать Long. Если любой из них будет больше, чем значение Long max, вам в значительной степени придется использовать BigInteger.

Ответ 2

РЕШЕНИЕ:

Scala.Long может содержать гораздо большее число, чем Scala.BigInt в Scala.

Ниже приведено определение переменных с максимальной емкостью.

val bigIntVariable = BigInt(1999999999)
val longvariable:Long = 9223372036854775807l //last character is l for long