El java.math.BigInteger .subtract(BigInteger val) se usa para calcular la diferencia aritmética de dos BigIntegers. Este método es aplicable en números de gran valor 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, pero como la clase BigInteger usa internamente una array de enteros para el procesamiento, la operación en el objeto de BigIntegers no es tan rápido como en las primitivas. 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 subtract(BigInteger val)
Parámetros: este método acepta un parámetro val que es el valor que se restará de este BigInteger.
Valor de retorno: este método devuelve un BigInteger que tiene una diferencia (this – val).
Los siguientes programas se utilizan para ilustrar el método restar() de BigInteger.
Ejemplo 1:
// Java program to demonstrate // subtract() method of BigInteger import java.math.BigInteger; public class GFG { public static void main(String[] args) { // BigInteger object to store result BigInteger diff; // For user input // Use Scanner or BufferedReader // Two objects of String created // Holds the values to calculate the difference String input1 = "56454210032311316797946498748"; String input2 = "34664864678464621214565587864"; // Convert the string input to BigInteger BigInteger a = new BigInteger(input1); BigInteger b = new BigInteger(input2); // Using subtract() method diff = a.subtract(b); // Display the result in BigInteger System.out.println("The difference of\n" + a + " \nand\n" + b + " " + "\nis\n" + diff); } }
The difference of 56454210032311316797946498748 and 34664864678464621214565587864 is 21789345353846695583380910884
Ejemplo 2:
// Java program to demonstrate // subtract() method of BigInteger import java.math.BigInteger; public class GFG { public static void main(String[] args) { // BigInteger object to store result BigInteger diff; // For user input // Use Scanner or BufferedReader // Two objects of String created // Holds the values to calculate the difference 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 subtract() method diff = a.subtract(b); // Display the result in BigInteger System.out.println("The difference of\n" + a + " \nand\n" + b + " " + "\nis\n" + diff); // Using double to hold the result double d = Double.parseDouble(diff.toString()); // Display the result in double System.out.println("Using double, difference is " + d); } }
The difference of
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234554324324362432767463726478326478326784637264783264736274673864736473246354635463546325645326456325463546536453654632546354653463254653453264564635463263453264654632498739473
and
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234587327189371829748971463784817489127847281478217487124872184787483274637564756745781641263981283972189743897432865743657645762376914689217817436247362472164761247612748612746
is
-33002865009396981507737306491010801062644213434222388597510922746801391210121282235315618654827646726197360979211111111291108913660035764552871611899208711496592980249873273
Using double, difference is -3.300286500939698E172
A partir de los ejemplos anteriores, está claro que los datos son completamente precisos cuando se usa BigInteger.