Работа с очень большими числами

1

Поэтому мне приходится иметь дело с очень большими цифрами. Фактически, точное число составляет 18 446 744 073 709 551 616, что составляет 2 ^ 64. Думаю, я мог бы написать это как 2 ^ 64, но тогда я собираюсь вычитать цифры из него и делить и что угодно, и некоторые из моих вычислений также могут быть в квинтиллионах. Я попытался добавить "L" до конца так:

public int total = 18446744073709551616L;

Тем не менее, он по-прежнему дает мне ту же ошибку, что и целое число слишком велико. Я не уверен, что это потому, что я печатаю его неправильно или он слишком велик, даже с "L". Любое решение вокруг этого? Я определенно желаю потратить немного вычислительной мощности или добавить дополнительное время выполнения, если это работает. Merci!

  • 0
    Читайте о классе BigInteger . Наибольшее long 2 ^ 63-1.
  • 0
    Вы не можете хранить этот размер в int . Вы не можете даже хранить этот размер в long
Теги:
int
largenumber

2 ответа

3
Лучший ответ

Вы можете использовать java.math.BigInteger.

Создайте BigInteger из строки, используя new BigInteger("18446744073709551616").

Вы можете выполнять математические операции, вызывая методы, такие как add, subtract, multiply, divide и mod. Вы не можете использовать операторы +, -, *, /, % поскольку они работают только с примитивными типами (и + на строках).

  • 0
    Примечание. В качестве альтернативы удаленного ответа rgettman вы можете использовать new BigInteger(2).pow(64) . Вы не можете использовать new BigInteger(18446744073709551616) как для этого нужно, чтобы число вписывалось в int для начала.
  • 0
    Ах, все эти ответы великолепны. Спасибо за помощь!
Показать ещё 2 комментария
1

Я верю в ваше дело, что только BigInteger или BigDecimal будут решением.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню