Curso de Java. ¿Cómo usar la clase Math?.
En ocasiones nos vemos en la necesidad de incluir cálculos, operaciones matemáticas, estadísticas, etc en nuestros programas java. Es cierto que muchos cálculos se pueden hacer simplemente utilizando los operadores aritméticos que java pone a nuestra disposición, pero existe una opción mucho más sencilla de utilizar, sobre todo para cálculos complicados. Esta opción es la clase Math del paquete java.lang.
La clase Math nos ofrece numerosos y valiosos métodos y constantes estáticos, que podemos utilizar tan sólo anteponiendo el nombre de la clase, (Math.metodo ó Math.Constante). Además podemos omitir el nombre de la clase si la importamos:
1 | import static java.lang.Math. *; |
Aquí os dejo algunas de las constantes y métodos mas utilizados de la clase Math y que podéis usar en vuestros programas:
Algunas Constantes de la Clase Math.
Constante. | Descripción. |
---|---|
E | Devuelve el valor más aproximado del número e |
PI | Devuelve el valor mas aproximado del número PI. |
Algunos Métodos de la Clase Math.
Método. | Descripción. |
---|---|
abs(double a) | Devuelve el valor absoluto de un valor double introducido como parámetro. |
abs(float a) | Devuelve el valor absoluto de un valor float introducido como parámetro. |
abs(int a) | Devuelve el valor absoluto de un valor Entero introducido como parámetro. |
abs(long a) | Devuelve el valor absoluto de un valor long introducido como parámetro. |
acos(double a) | Devuelve el arco coseno de un valor introducido como parámetro. |
addExact(int x, int y) | Devuelve la suma de sus argumentos, lanzando una excepción si el resultado desborda un int. |
addExact(long x, long y) | Devuelve la suma de sus argumentos, lanzando una excepción si el resultado se desborda a long. |
asin(double a) | Devuelve el arco seno de un valor introducido. |
atan(double a) | Devuelve el arco tangente de un valor introducido. |
cbrt(double a) | Devuelve la raíz cúbica de un doublevalor. |
cos(double a) | Devuelve el coseno trigonométrico de un ángulo. |
exp(double a) | Devuelve el número e de Euler elevado a la potencia de un doublevalor. |
log(double a) | Devuelve el logaritmo natural (base e ) de un double valor. |
log10(double a) | Devuelve el logaritmo de base 10 de un doublevalor. |
max(double a, double b) | Devuelve el mayor de dos valores double |
max(float a, float b) | Devuelve el mayor de dos valores float. |
max(int a, int b) | Devuelve el mayor de dos valores Enteros. |
max(long a, long b) | Devuelve el mayor de dos valores long. |
min(double a, double b) | Devuelve el menor de dos valores double. |
min(float a, float b) | Devuelve el menor de dos valores float. |
min(int a, int b) | Devuelve el menor de dos valores enteros. |
min(long a, long b) | Devuelve el menor de dos valores long. |
multiplyExact(int x, int y) | Devuelve el producto de los argumentos, lanzando una excepción si el resultado desborda un int. |
multiplyExact(long x, long y) | Devuelve el producto de los argumentos, lanzando una excepción si el resultado desborda un long. |
pow(double a, double b) | Devuelve el valor del primer argumento elevado a la potencia del segundo argumento. |
random() | Devuelve un doublevalor con un signo positivo, mayor o igual que 0.0 y menor que 1.0. |
round(double a) | Devuelve el long redondeado más cercano al double introducido. |
round(float a) | Devuelve el int mas cercano y redondeado al float introducido. |
sin(double a) | Devuelve el seno trigonométrico de un ángulo. |
sqrt(double a) | Devuelve la raíz cuadrada positiva correctamente redondeada de un doublevalor. |
tan(double a) | Devuelve la tangente trigonométrica de un ángulo. |
Podéis acceder a una lista más completa de los métodos y constantes disponibles en la clase Math en el siguiente enlace o página de Oracle
Ejemplo de programa java que usa la clase Math.
En el siguiente ejemplo de programa java utilizamos la clase Math para realizar algunos cálculos y operaciones. También aprovechamos y utilizamos la clase Decimalformat para presentar con formato uno de los resultados que nos dan, de esta manera vamos practicando y afianzando lo que vamos aprendiendo durante el curso de java.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | package clasemath; import java.text.DecimalFormat; /** * * @author codesitio.com */ public class ClaseMath { public static String metodoForm ( String patron, double dato) { DecimalFormat objDF = new DecimalFormat (patron); String result = objDF.format (dato); return result; } public static void main(String[] args) { double num1 = -10.570; double num2 = 4.10; int num3 = 10; int num4 = 38; double dato; System.out.printf ("El valor absoluto de %.3f es %.2f %n", num1, Math.abs(num1)); System.out.printf ("El máximo de %d y %d es %d %n", num3, num4, Math.max (num3, num4)); System.out.printf ("El mínimo de %d y %d es %d %n", num3, num4, Math.min (num3, num4)); System.out.printf ("El valor de e es %.4f %n", Math.E); System.out.printf ("exp (%d) es %.3f %n",num3, Math.exp (num3)); System.out.printf ("log (%d) es %.3f %n", num4, Math.log (num4)); System.out.printf ("%.2f elevado a %d es %f %n", num2, num3, dato = Math.pow (num2, num3)); System.out.printf("Que con formato es: %n " +metodoForm("###,###.##",dato )+"%n"); System.out.printf ("La raiz cuadrada de (%.2f) es %.2f %n", num2, Math.sqrt (num2)); } } |
En consola tendriamos los siguientes resultados:
Método random() de la clase Math.
El método random podemos utilizarlo para generar números al azar. El rango o margen con el que trabaja el método random oscila entre 0.0 y 1.0 (Este último no incluido).
Por lo tanto, para generar un número entero entre 0 y 9, Hay que escribir la siguiente sentencia:
1 | int numero = (int) (Math.random () * 10); |
De esta manera al multiplicar el valor por 10, el rango de valores posibles se convierte en:
1 | 0.0 <= numero < 10.0 |
Para finalizar Podeis ver un ejemplo de programa java que utiliza el método random de la clase Math en esta página.