El java.math.BigInteger .add(BigInteger val) se usa para calcular la suma aritmética de dos BigIntegers. Este método se utiliza para encontrar sumas aritméticas de grandes números de un rango mucho mayor que el rango del doble de tipo de datos más grande de Java sin comprometer la precisión del resultado. Este método realiza una operación sobre el BigInteger actual mediante el cual se llama a este método y se pasa BigInteger como parámetro.
Sintaxis:
public BigInteger add(BigInteger val)
Parámetros: este método acepta un parámetro val que es el valor que se agregará a este BigInteger.
Valor devuelto: este método devuelve un BigInteger que contiene la suma (este + val).
Los siguientes programas se utilizan para ilustrar el método add() de BigInteger.
Ejemplo 1:
// Java program to demonstrate // add() method of BigInteger import java.math.BigInteger; public class GFG { public static void main(String[] args) { // BigInteger object to store result BigInteger sum; // For user input // Use Scanner or BufferedReader // Two objects of String created // Holds the values to calculate the sum String input1 = "5454564684456454684646454545"; String input2 = "4256456484464684864864864864"; // Convert the string input to BigInteger BigInteger a = new BigInteger(input1); BigInteger b = new BigInteger(input2); // Using add() method sum = a.add(b); // Display the result in BigInteger System.out.println("The sum of\n" + a + " \nand\n" + b + " " + "\nis\n" + sum + "\n"); } }
Producción:
La suma de
5454564684456454684646454545
y
4256456484464684864864864864
es
9711021168921139549511319409
Como puede ver en el ejemplo anterior, los datos son totalmente precisos incluso después de agregar un número de longitud muy grande.
Ejemplo 2:
// Java program to demonstrate // add() method of BigInteger import java.math.BigInteger; public class GFG { public static void main(String[] args) { // BigInteger object to store result BigInteger sum; // double variable // To store result as double double d; // For user input // Use Scanner or BufferedReader // Two objects of String // Holds the values to sum // The number's length is of 400 digits // Which is out of range of double String input1 = "012345678901234567" + "8901234567890123" + "4567890123456789" + "0123456789012345" + "6789012345678901" + "2345678901234567" + "8901234567890123" + "4567890123456789" + "0123456789012345" + "6789012345678901" + "2345678901234567" + "8901234567890123" + "4567890123456789" + "0123456789012345" + "6789012345678901" + "2345678901234567" + "8901234567890123" + "4554324324362432" + "7674637264783264" + "7832678463726478" + "3264736274673864" + "7364732463546354" + "6354632564532645" + "6325463546536453" + "6546325463546534" + "6325465345326456" + "4635463263453264" + "654632498739473"; String input2 = "0123456789012345" + "6789012345678901" + "2345678901234567" + "8901234567890123" + "4567890123456789" + "0123456789012345" + "6789012345678901" + "2345678901234567" + "8901234567890123" + "4567890123456789" + "0123456789012345" + "6789012345678901" + "2345678901234567" + "8901234567890123" + "4567890123456789" + "0123456789012345" + "6789012345678901" + "2345873271893718" + "2974897146378481" + "7489127847281478" + "2174871248721847" + "8748327463756475" + "6745781641263981" + "2839721897438974" + "3286574365764576" + "2376914689217817" + "4362473624721647" + "61247612748612746"; // convert the string input to BigInteger BigInteger a = new BigInteger(input1); BigInteger b = new BigInteger(input2); // Using add() method sum = a.add(b); // Display the result in BigInteger System.out.println("The sum of\n" + a + " \nand\n" + b + " " + "\nis\n" + sum); // Using double to hold the result d = Double.parseDouble(sum.toString()); // Display the result in double System.out.println("Using double, Sum is " + d); } }
Producción:
The sum of
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234554324324362432767463726478326478326784637264783264736274673864736473246354635463546325645326456325463546536453654632546354653463254653453264564635463263453264654632498739473
and
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234587327189371829748971463784817489127847281478217487124872184787483274637564756745781641263981283972189743897432865743657645762376914689217817436247362472164761247612748612746
is
2469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469141651513734262516435190263143967454631918743000751861146858652219747883919392209327966909307740297653290433886520376204000415840169342671082000882825735618025902245247352219
Using double, Sum is Infinity
A partir de la salida anterior, está claro que usar el doble para números enteros más grandes no es una buena opción.
Referencia: https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/math/BigInteger.html#add(java.math.BigInteger)