Тип данных в С++ или java для хранения 20-значного целого числа

Есть ли какой-либо тип данных, доступный в Java или С++, который может содержать целые значения в 20 цифр или более? Длительный длинный тип данных может содержать только до 18 цифр.

Ответ 1

Спецификация Java:

Вы ищете BigInteger

Неизменяемые целые числа произвольной точности. Все операции ведут себя так, как если бы BigIntegers были представлены в двухзначной нотации (например, Java-примитивных целочисленных типах)

Для ex:

  BigInteger bint = new BigInteger("1234567856656569");
  BigInteger bint2 = new BigInteger("1234556567856656569");
  System.out.println(bint2.intValue()-bint.intValue()); //397189120

И BigDecimal

Ответ 2

Взгляните на java BigInteger.

Ответ 3

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

  • BigInteger: для чисел без десятичных значений
  • BigDecimal: для чисел с десятичными значениями

Ответ 4

Отъезд Исследование большого целого в С++. pdf от Owen Astrachan. Я нашел этот файл чрезвычайно полезным с подробным представлением и реализацией кода. Он не использует стороннюю библиотеку. Я использовал это для обработки огромных чисел (если у вас достаточно памяти для хранения vector<char>) без проблем.

Я ответил на аналогичный вопрос здесь, где я дал более подробное введение.

Ответ 5

Для С++ вы можете проверить класс Matt McCutchen Big Integer, для Java просто используйте BigInteger

Ответ 6

BigInteger класс в Java может содержать такие числа.

В качестве альтернативы вы можете реализовать свой собственный класс на основе двух длинных длинных номеров.

Ответ 7

Для С++ см. "Повысьте отличную .

Ответ 8

Использовать тип данных BigInt с его неявными операциями

Вот пример добавления

      BigInteger big1 = new BigInteger("1234567856656567242177779");
      BigInteger big2 = new BigInteger("12345565678566567131275737372777569");
      BigInteger bigSum = big1.add(big2);
      System.out.println(bigSum );