miércoles, 12 de octubre de 2016

**Clase Math en Java**

1-Breve explicación de la clase Math

La clase Math de Java será una de las clases que tengamos que utilizar alguna vez (seguramente muchas veces) para realizar todo tipo de operaciones matemáticas como logaritmos, raíces cuadradas,  funciones trigonométricas....


La documentación de esta clase y de todas las clases de Java las podemos estudiar desde el siguiente enlace Todas las clases de Java, en él en la parte izquierda si buscamos la clase Math y accedemos a ella tendremos acceso a la documentación de esta clase, con todos sus métodos y una explicación de qué hace cada método.

Lo primero que podemos ver en la documentación de Java sobre la clase Math es que es una clase que hereda de la clase Object (Todas las clases en Java heredan, como mínimo de la clase Object, incluso las clases que creemos nosotros mismos). También podemos observar que es una clase final. Una clase final quiere decir que no se podrán crear clases que hereden de la clase Math.


Si observamos todos los métodos de esta clase vemos que todos los métodos son estáticos. ¿Qué quiere decir que un método es estático? Un método estático es aquel al que para acceder a él no hace falta crear un objeto de la clase que lo contiene. Se puede acceder al método poniendo el nombre de la clase seguido de punto y el nombre del método. Por ejemplo, para acceder al método estático sqrt (este método calcula la raíz cuadrada de un número de tipo double) de la clase Math lo haremos de la siguiente manera:

public class ClaseMath {

    public static void main(String[] args) {

        double numero = 45.78D;

        double resultado = Math.sqrt(numero);

      

        System.out.println(resultado);

    }



}

2-Variables de la clase Math.

La clase Math consta de 2 variables constantes, la constante E, que guarda el valor de tipo doble de la base de los logaritmos naturales, y la constante PI, que guarda el valor de tipo doble de Pi. Podemos emplearlo por ejemplo de la siguiente manera:

public class ClaseMath {

    public static void main(String[] args) {

        System.out.println("El valor de E es : " + Math.E);

        System.out.println("El valor de PI es: " + Math.PI);

    }

}

3-Métodos más importantes de la clase Math

Vamos a ver los métodos más importantes de esta clase y cómo utilizarlos con ejemplos de código. Si queréis saber cómo se utilizan otros métodos que aquí no se explican podéis acceder a la documentación de Java que hemos mencionado anteriormente para ver cómo funcionan y qué es lo que hace cada método.

3.1-Método addExact(tipoDato a, tipoDato b).

El método addExact() permite sumar dos valores. Estos valores deberán de ser o bien de tipo enteros o de tipo long.


Veamos el siguiente código que utiliza el método addExact() tanto con enteros como de tipo long:

public class ClaseMath {

    public static void main(String[] args) {

        //Con enteros

       int num1 = 4;

       int num2 = 9;

       int suma = Math.addExact(num1, num2);

       

        System.out.println(suma);

        

        //Con tipo long

        long numero1 = 10;

        long numero2 = 5;

        long suma2 = Math.addExact(numero1, numero2);

        

        System.out.println(suma2);

        

        //De las dos maneras hace lo mismo el método

    }

}

3.2-Método ceil(double a).

El método ceil(double a) devuelve el double de tipo entero más cercano al argumento que se le pasa, lléndose hacia + infinito. Un double de tipo entero es un número de tipo double cuya parte decimal siempre será 0.

public class ClaseMath {

    public static void main(String[] args) {

        System.out.println(Math.ceil(25.78));//Devuelve 26.0

        System.out.println(Math.ceil(2.3));//Devuelve 3.0

        System.out.println(Math.ceil(2.9));//Devuelve 3.0

        System.out.println(Math.ceil(-1.29));//Devuelve -1.0

        System.out.println(Math.ceil(-1.885));//Devuelve -1.0

    }

}


No hay que confundir este método con el método round(). El método round() devuelve un número redondeado.

3.3-Método round(tipoDato a).

El método round() es el que se encarga de redondear un número y que puede devolver un dato de tipo long o un dato de tipo int como podemos ver en la documentación de Java
Si elegimos que nos devuelva un tipo long el método round(), le debemos de pasar como argumento un tipo double. En cambio, si queremos que nos devuelva un tipo entero debemos pasarle un tipo float como argumento.

public class ClaseMath {

    public static void main(String[] args) {

        System.out.println(Math.round(25.71));//Devuelve 26

        System.out.println(Math.round(24.5));//Devuelve 25

        System.out.println(Math.round(42.4));//Devuelve 42

        System.out.println(Math.round(59.4456));//Devuelve 59

    }

}

3.4-Método random().

El método random() devuelve un número aleatorio igual o mayor que 0.0 y menor que 1.0 de tipo double. Podemos utilizar este método para crear números aleatorios que sean mayor que 1.0. Por ejemplo para crear un número aleatorio entre 1 y 25 sería:

public class ClaseMath {

    public static void main(String[] args) {

        System.out.println(Math.random() * 25+1);

    }

}

Esto daría un número aleatorio entre 1 y 25 de tipo double. Para que imprima un número entero debemos de hacer un casting o conversión de tipos:

public class ClaseMath {

    public static void main(String[] args) {

        int resultado = (int) (Math.random()*25+1);

        System.out.println(resultado);

    }

}

3.5-Método hypot(double a, double b). 

El método hypot() devuelve el resultado de la raíz cuadrada de la suma de 2 números al cuadrado, es decir, sqrt(x2 +y2), dónde sort es la raíz cuadrada.
Veamos en el siguiente ejemplo como usar este método:

public class ClaseMath {

    public static void main(String[] args) {

        double num1 = 5;

        double num2 = 10;

        double resultado = Math.hypot(num1, num2);

        System.out.println(resultado);

    }

}

3.6-Método log(double a).

Devuelve el logaritmo natural en base e de un valor doble. Ejemplo de uso:

public class ClaseMath {

    public static void main(String[] args) {

        double num1 = 5;

        double resultado = Math.log(num1);

        System.out.println(resultado);

    }

}

3.7-Método max(tipoDato a, tipoDato b) y método min(tipoDato a, tipoDato b).

El método max() devuelve el número mayor de los dos números pasados como argumento. Los números pasados por argumento podrán ser: enteros, float, long o double.

public class ClaseMath {

    public static void main(String[] args) {

        int num1 = 5;

        int num2 = 6;

        double resultado = Math.max(num1, num2);

        //Devuelve el número 6 que es el mayor

        System.out.println(resultado);

    }

}

El método min() es igual que el método max() salvo que devuelve el número menor de dos números. Estos números que se le pasan como argumento podrán ser, al igual que en el método max(), enteros, float, double o long.

public class ClaseMath {

    public static void main(String[] args) {

        int num1 = 5;

        int num2 = 6;

        double resultado = Math.min(num1, num2);

        //Devuelve el número 5 que es el menor

        System.out.println(resultado);

    }

}

3.8-Método pow(double a, double b).

El método pow() devuelve el resultado de elevar el primer argumento a la potencia del segundo argumento. El tipo de dato que se le pasa como argumento tienen que ser de tipo double.

public class ClaseMath {

    public static void main(String[] args) {

        System.out.println("Elevar 7 a la potencia de 2 da como "

                + "resultado: " + Math.pow(7, 2));

    }

}

3.9-Método sqrt(double a).

El método sqrt() se utiliza para obtener la raíz cuadrada de un número que se le pasa como argumento y que tiene que ser de tipo double.

public class ClaseMath {

    public static void main(String[] args) {

        System.out.println("La raíz cuadrada de 25 es: " +

                Math.sqrt(25));

    }

}


3.10-Método subtractExact(tipoDato a, tipoDato b).

El método subtractExact() devuelve la diferencia, es decir, la resta de dos números que se le pasan como argumento. Estos números podrán ser los dos de tipo entero o de tipo long.

public class ClaseMath {

    public static void main(String[] args) {

        int num1 = 45;

        int num2 = 13;

        double resultado = Math.subtractExact(num1, num2);

        System.out.println(resultado);

    }

}

3.11-Métodos tan(double a), sin(double a) y cos(double a).

Estos métodos devuelven la tangente, el seno y el coseno de un ángulo. El ángulo se le pasa como argumento al método y éste debe ser de tipo double. El ángulo se le pasa en radianes, NO en grados.

public class ClaseMath {

    public static void main(String[] args) {

        System.out.println(Math.tan(89));//Muestra la tangente de 89 radianes

        System.out.println(Math.sin(56));//Muestra el seno de 56 radianes

        System.out.println(Math.cos(78));//Muestra el coseno de 78 radianes

    }

}

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...