Поэтому мне приходится иметь дело с очень большими цифрами. Фактически, точное число составляет 18 446 744 073 709 551 616, что составляет 2 ^ 64. Думаю, я мог бы написать это как 2 ^ 64, но тогда я собираюсь вычитать цифры из него и делить и что угодно, и некоторые из моих вычислений также могут быть в квинтиллионах. Я попытался добавить "L" до конца так:
public int total = 18446744073709551616L;
Тем не менее, он по-прежнему дает мне ту же ошибку, что и целое число слишком велико. Я не уверен, что это потому, что я печатаю его неправильно или он слишком велик, даже с "L". Любое решение вокруг этого? Я определенно желаю потратить немного вычислительной мощности или добавить дополнительное время выполнения, если это работает. Merci!
Вы можете использовать java.math.BigInteger
.
Создайте BigInteger из строки, используя new BigInteger("18446744073709551616")
.
Вы можете выполнять математические операции, вызывая методы, такие как add
, subtract
, multiply
, divide
и mod
. Вы не можете использовать операторы +
, -
, *
, /
, %
поскольку они работают только с примитивными типами (и +
на строках).
new BigInteger(2).pow(64)
. Вы не можете использовать new BigInteger(18446744073709551616)
как для этого нужно, чтобы число вписывалось в int
для начала.
Я верю в ваше дело, что только BigInteger или BigDecimal будут решением.
BigInteger
. Наибольшееlong
2 ^ 63-1.int
. Вы не можете даже хранить этот размер вlong