
package pruebasclasesmath;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;

public class PruebasClasesMath {

    public static void main(String[] args) {
        System.out.println("-----  BigInteger -----");
        BigInteger bigInteger1 = new BigInteger("53569");  // Obtenemos un BigInteger a partir de un String
        BigInteger bigInteger2 = BigInteger.valueOf(3580); // Obtenemos un BigInteger a partir de un long
        BigInteger bigIntegerResultado;
        bigIntegerResultado = bigInteger1.add(bigInteger2);
        System.out.println("BigInteger suma: "+bigIntegerResultado.toString());
        bigIntegerResultado = bigInteger1.subtract(bigInteger2);
        System.out.println("BigInteger resta: "+bigIntegerResultado.toString());
        bigIntegerResultado = bigInteger1.multiply(bigInteger2);
        System.out.println("BigInteger producto: "+bigIntegerResultado.toString());
        bigIntegerResultado = bigInteger1.divide(bigInteger2);
        System.out.println("BigInteger cociente: "+bigIntegerResultado.toString());
        bigIntegerResultado = bigInteger1.mod(bigInteger2);
        System.out.println("BigInteger resto: "+bigIntegerResultado.toString());
        bigIntegerResultado = bigInteger1.pow(15);  // El parámetro que actúa como exponente debe ser int
        System.out.println("BigInteger potencia: "+bigIntegerResultado.toString());
        
        System.out.println("-----  BigDecimal -----");
        BigDecimal bigDecimal1 = new BigDecimal("12569.56089");  // Obtenemos un BigDecimal a partir de un String
        BigDecimal bigDecimal2 = BigDecimal.valueOf(358.12);     // Obtenemos un BigDecimal a partir de un double
        BigDecimal bigDecimalResultado;
        bigDecimalResultado = bigDecimal1.add(bigDecimal2);
        System.out.println("BigDecimal suma: "+bigDecimalResultado.toString());
        bigDecimalResultado = bigDecimal1.subtract(bigDecimal2);
        System.out.println("BigDecimal resta: "+bigDecimalResultado.toString());
        bigDecimalResultado = bigDecimal1.multiply(bigDecimal2);
        System.out.println("BigDecimal producto: "+bigDecimalResultado.toString());
        bigDecimalResultado = bigDecimal1.divide(bigDecimal2, RoundingMode.FLOOR);
        System.out.println("BigDecimal cociente: "+bigDecimalResultado.toString());      
        bigDecimalResultado = bigDecimal1.pow(15);  // El parámetro que actúa como exponente debe ser int
        System.out.println("BigDecimal potencia: "+bigDecimalResultado.toString());        
    } 
}
