Question Type de données en c ++ ou java pour contenir un nombre entier de 20 chiffres


Existe-t-il un type de données disponible en Java ou en C ++ pouvant contenir des valeurs entières de 20 chiffres ou plus? Le type de données long long ne peut contenir que 18 chiffres.


12
2017-12-25 11:52


origine


Réponses:


Java spécifique:

Tu recherches BigInteger

Des nombres entiers de précision arbitraires. Toutes les opérations se comportent comme si BigIntegers était représenté en notation à complément à deux (comme les types entiers primitifs de Java)

Pour ex:

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

Et BigDecimal


12
2017-12-25 12:01



Jetez un oeil à java BigInteger.


4
2017-12-25 11:54



Dans java vous pouvez utiliser:

  • BigInteger: pour les nombres sans valeurs décimales
  • BigDecimal: pour les nombres avec des valeurs décimales

3
2017-12-25 12:01



Check-out La grande étude de cas en nombres entiers en C ++. Pdf par Owen Astrachan. J'ai trouvé ce fichier extrêmement utile avec l'introduction détaillée et l'implémentation du code. Il n'utilise aucune bibliothèque tierce. J'ai utilisé ceci pour gérer des nombres énormes (du moment que vous avez suffisamment de mémoire pour stocker vector<char>) sans problèmes.

J'ai répondu à une question similaire ici, où j'ai donné une présentation plus détaillée.


3
2017-12-25 12:05



Pour C ++, vous pouvez consulter les articles de Matt McCutchen Big Integer classe, pour Java, utilisez simplement BigInteger


3
2017-12-25 14:31



BigInteger classe en Java peut contenir de tels nombres.

Alternativement, vous pouvez implémenter votre propre classe, basée sur deux longs numéros longs.


2
2017-12-25 12:00



Pour C ++, voir l'excellent Boost bibliothèque multiprécision.


1
2017-12-26 06:47



Utiliser le type de données BigInt avec ses opérations implicites

Voici un exemple d'addition

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

1
2018-04-19 05:32