De manière générale, la mise en œuvre de grands nombres se fait par deux méthodes: BigInteger et BigDecimal. Ces deux méthodes représentent des entiers de précision arbitraire immuables et des nombres décimaux de précision arbitraire signés immuables (nombres de points flottants). Principalement utilisé dans les calculs de haute précision. Ces deux classes font des opérations de haute précision en Java Simple. Cependant, cet article n'introduit pas d'opérations à grand nombre en Java à travers les deux méthodes ci-dessus.
L'idée principale est: mettre deux nombres dans la chaîne, puis retirer chaque numéro, le mettre dans le tableau, démarrer le calcul du dernier bit, calculer l'addition et déterminer si le transport est transporté. Le portage est le bit précédent +1. Si la longueur dépasse, copiez-le dans le nouveau tableau.
Le code est le suivant:
classe publique BigIntadd {private int [] array; // déclare un tableau // la fonction pour calculer l'ajout de grands nombres statiques publics static bigadd (bigintadd fisrtnum, bigintadd secondnum) {string result = ""; boolean false = false; // le drapeau pour déterminer si l'arraie est hors des limites int [] arrayone; int [] l'arrayt null; // mettez la chaîne plus longue dans le tableau ArrayOne, car le résultat de calcul doit être placé dans le tableau ArrayOne if (fisrtnum.instance (). Length> = secondnum.instance (). Length) {ArrayOne = Fisrtnum.instance (); Arraytwo = secondnum.instance ();} else {ArrayOne = secondnum.instance (); arraytwo = fisrtnum.instance ();} pour (int i = 0; i <arraytwo.length; i ++) {if (arrayone [i] + arraytwo [i] <10) {// quand il n'y a pas de transport, arrayone [i] = arrayone [i] + arraytwo [i];} (ArrayOne [i] + arraytwo [i]> = 10) {// arrayone [i] = arrayone [i] + arraytwo [i] - 10; if ((i + 1) <ArrayOne.length) {ArrayOne [i + 1] = arrayone [i + 1] + 1; // ajoute le bit suivant à 1} autre {// quand la longueur de l'arraie est suffisante, il est suffisant à 1} sin ArrayTHree falg = true; arrayTheRe = new int [arrayOne.length + 1]; System.arrayCopy (ArrayOne, 0, ArrayThere, 0, ArrayOne.Length); ArrayThere [ArrayOne.Length] {pour (int i: arrayThere) {result + = i;}} else {for (int i: arrayOne) {result + = i;}} // inverser le résultat et retourner un nouveau stringbuffer (résultat) .Reverse (). toString ();} // initialiser la méthode Array Private int [] instance () {return array;} // initialiser le constructeur BigIntadddDd) {StringBuffer sb = new StringBuffer (num); String String = sb.reverse (). ToString (); // implémenter l'inversion de chaîne pour faciliter le calcul array = new int [string.length ()]; // convertit String en un array pour (int i = 0; i <string.length (); i ++) {array [i] = integer.valueof (String (i ++) {array [i] = integer.valueof (String. i + 1));}} public static void main (String [] args) {string result = bigIntadd.bigadd (new BigIntadd ("52111111"), new BigIntadd ("4099999999"); System.out.println (résultat);}}}résultat:
Résumer
Ce qui précède est l'intégralité du contenu de cet article sur la programmation Java pour implémenter deux grands nombres ajoutés des exemples de code. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!