Вы находитесь на странице: 1из 9

FUNCIONES CLASE MATH JAVA

La clase Math representa la librera matemtica de Java. Las funciones que


contiene son las de todos los lenguajes, parece que se han metido en una clase
solamente a propsito de agrupacin, por eso se encapsulan en Math, y lo
mismo sucede con las dems clases que corresponden a objetos que tienen un
tipo equivalente (Character, Float, etc.). El constructor de la clase es privado,
por los que no se pueden crear instancias de la clase. Sin embargo, Math es
public para que se pueda llamar desde cualquier sitio y static para que no haya
que inicializarla.

A continuacin, mostraremos las funciones ms importantes y ejemplos de uso:

Funcin
Significado Ejemplo de uso Resultado
matemtica

abs Valor absoluto int x = Math.abs(-2); x = 2;

x=
atan Arcotangente double x = Math.atan(1);
0.78539816339744;

sin Seno double x = Math.sin(0.5); x = 0.4794255386042;

x=
cos Coseno double x = Math.cos(0.5);
0.87758256189037;

x=
tan Tangente double x = Math.tan(0.5);
0.54630248984379;

Exponenciacin x=
exp double x = Math.exp(1);
neperiana 2.71828182845904;

log Logaritmo neperiano double x = x=


Math.log(2.7172); 0.99960193833500;

double x =
pow Potencia x = 8.0;
Math.pow(2,3);

double x =
round Redondeo x = 3;
Math.round(2.5);

double x = x=
random Nmero aleatorio
Math.ramdom(); 0.20614522323378;

Redondeo al entero double x =


floor x = 2.0;
menor Math.floor(2.5);

Redondeo al entero
ceil double x = Math.ceil(2.5); x = 3.0;
mayor

Destacar que las funciones matemticas, al pertenecer a la clase Math, se invocan siempre
de la siguiente manera: Math.funcion(argumentos).

Las funciones relacionadas con ngulos (atan, cos, sin, tan, etc.) trabajan en radianes. Por
tanto, para operar con grados, tendremos que realizar la conversin oportuna. La propia
clase Math facilita los mtodos toRadians para transformar grados sexagesimales en
radianes y toDegrees para transformar radianes en grados sexagesimales, aunque las
conversiones pueden no ser totalmente precisas. Por ejemplo cos(toRadians(90.0)) debera
devolver 0, pero es probable que devuelva un valor aproximadamente cero pero no
exactamente cero debido a que la precisin decimal no es absoluta.

La funcin random,permite generar nmeros aleatorios en el rango ]0,1[. Por tanto el 0 y el


1 estn excluidos.

La funcin exponenciacin neperiana o exponenciacin de e, matemticamente significa ex,


que en Java sera Math.exp(x), donde x es un nmero real y la base es la constante
neperiana e = 2.7172...

La funcin logaritmo neperiano, matemticamente significa Ln x, que en Java


correspondera a la expresin Math.log(x).
La funcin potencia, matemticamente significa baseexponente, que en Java se convertira en
Math.pow(base,exponente),donde base y exponente son nmeros reales, por lo tanto, si
queremos obtener la raz cubica de 2,la instruccin sera Math.pow(2,0.333).

No hay una funcin directa para obtener la parte entera de un nmero real, pero para estos
casos, se puede obtener de la siguiente manera:

int x = (int)(8.7); --> x = 8;

int x = (int)(-8.7); --> x = -8;

Aclarar que obtener la parte entera es distinto a redondear.

Si vas a trabajar con constantes fsicas o matemticas, te resultar de inters la instruccin


final para la declaracin de constantes. La ventaja de declarar una constante en vez de una
variable, consiste en que la constante no puede variar en el transcurso del programa. Por
tanto, se impide que por error pueda tener un valor no vlido en un momento dado. Las
constantes facilitan la documentacin del programa y lo hacen fcil de modificar. Una
declaracin tipo de constante podra ser la siguiente:

Final double pi = 3.14159265358979;

Sin embargo, el propio Java tiene una constante propia para definir la constante matemtica
PI: Math.PI

El siguiente programa, mostrar su uso en la conversin de un ngulo sexagesimal a


radianes.

public class Programa {

public static void main(String args[]) {

double sexagesimal = 30;

double radianes = Math.PI/180 * sexagesimal;

System.out.println("Angulo en radianes : "+radianes);

DIFERENCIA ENTRE ROUND, CEIL Y FLOOR


Las funciones round, ceil y floor se usan para obtener un entero prximo a un nmero
decimal y tienen similitudes, de hecho en algunos casos devuelven el mismo resultado. Sin
embargo tambin tienen diferencias que es interesante conocer. Estas tres funciones se
aplican sobre valores numricos decimales y retornan un valor numrico que en el caso de
round es un entero long, mientras que en el caso de floor y ceil retornan un valor de tipo
double coincidente o equivalente con un entero.

El mtodo round redondea siempre al entero ms prximo, por ejemplo 2.6 redondea a 3
mientras que -2.6 redondea a -3. Si el decimal est exactamente entre dos valores se
redondea al entero superior ms prximo (por ejemplo 2.5 redondea a 3 y -2.5 redondea a
-2).

El mtodo floor diremos que devuelve el entero menor, por ejemplo 2.9 quedara en 2.0 y
-2.9 quedara en -3.0. Tambin 2.1 quedara en 2.0 y -2.1 quedara en -3.0.

El mtodo ceil diremos que devuelve el entero mayor, por ejemplo 2.9 quedara en 3.0 y
-2.9 quedara en -2.0. Tambin 2.1 quedara a 3.0 y -2.1 quedara en -2.0.

En cada programa deberemos determinar qu mtodo es el adecuado para obtener los


resultados deseados. Por ejemplo, si tenemos que redondear cantidades de dinero parece
ms lgico utilizar round. En cambio, si estamos trabajando con edades de una persona en
aos utilizando decimales, podremos razonar de otra manera. La edad de una persona es un
valor positivo (no es posible que tome valores negativos). Una persona decimos que tiene x
aos mientras no cumpla x+1 aos, de modo que en todo el periodo intermedio decimos
que tiene x aos. Por ejemplo, si cumplo 35 aos el 4 de febrero de 2096, desde el 4 de
febrero de 2096 hasta el 3 de febrero de 2097 dir que tengo 35 aos. Pero en un programa
que trabaje con decimales, en el punto intermedio entre estas dos fechas tendra 35.50 aos.
Si quiero obtener el valor que representa la edad a partir del valor decimal, lo lgico ser
utilizar el mtodo floor porque nos devolver 35 para todos los valores decimales entre 35 y
36, tal y como expresamos en el lenguaje natural las edades. En este caso tanto round como
ceil no ofreceran un resultado adecuado a nuestros intereses.

Tipos de datos en Java.


Los primeros lenguajes de programacin no usaban objetos, solo variables. Una
variable podramos decir que es un espacio de la memoria del ordenador
a la que asignamos un contenido que puede ser un valor numrico (slo
nmeros, con su valor de clculo) o de tipo carcter o cadena de caracteres
(valor alfanumrico que constar slo de texto o de texto mezclado con
nmeros).
Como ejemplo podemos definir una variable a que contenga 32 y esto lo escribimos como a
= 32. Posteriormente podemos cambiar el valor de a y hacer a = 78. O hacer a
equivalente al valor de otra variable b as: a = b.

Dado que antes hemos dicho que un objeto tambin ocupa un espacio de memoria: en qu
se parecen y en qu se diferencia un objeto de una variable? Consideraremos que las
variables son entidades elementales: un nmero, un carcter, un valor verdadero o falso
mientras que los objetos son entidades complejas que pueden estar formadas por la
agrupacin de muchas variables y mtodos. Pero ambas cosas ocupan lo mismo: un espacio
de memoria (que puede ser ms o menos grande).

En los programas en Java puede ser necesario tanto el uso de datos elementales como de
datos complejos. Por eso en Java se usa el trmino Tipos de datos para englobar a
cualquier cosa que ocupa un espacio de memoria y que puede ir tomando distintos valores o
caractersticas durante la ejecucin del programa. Es decir, en vez de hablar de tipos de
variables o de tipos de objetos, hablaremos simplemente de tipos de datos. Sin embargo, a
veces coloquialmente no se utiliza la terminologa de forma estricta: puedes encontrarte
textos o pginas web donde se habla de una variable en alusin a un objeto.

En Java diferenciamos dos tipos de datos: por un lado, los tipos primitivos, que se
corresponden con los tipos de variables en lenguajes como C y que son los datos
elementales que hemos citado. Por otro lado, los tipos objeto (que normalmente incluyen
mtodos).

8 tipos de datos primitivos o integrados:


- 4 tipos enteros (byte, short, int, long).
- 2 tipos de coma flotante (float, double).
- Booleano (boolean).
- Carcter (char).

No son objetos.

Se definen de forma (casi) idntica en cada mquina en la que se ejecuta Java, algo que no
ocurre en otros lenguajes de programacin.

TIPOS RANGO
NOMBRE TIPO OCUPA
DE APROXIMADO
DATOS
EN JAVA

TIPOS byte Entero 1 byte -128 a 127


PRIMITIVOS

(sin mtodos; no son


objetos; no necesitan short Entero 2 bytes -32768 a 32767
una invocacin para
ser creados)
int Entero 4 bytes 2*109
long Entero 8 bytes Muy grande

Decimal
float 4 bytes Muy grande
simple

Decimal
double 8 bytes Muy grande
doble

Carcter
char 2 bytes ---
simple

Valor true
boolean 1 byte ---
o false

TIPOS OBJETO String (cadenas de texto)


Tipos de la
biblioteca estndar
(con mtodos, Muchos otros (p.ej. Scanner, TreeSet,
de Java
necesitan una ArrayList)
invocacin para ser
creados)

Tipos definidos por


Cualquiera que se nos ocurra, por ejemplo
el programador /
Taxi, Autobus, Tranvia
usuario

Serie de elementos o formacin tipo vector o


arrays matriz. Lo consideraremos un objeto especial
que carece de mtodos.

Tipos envoltorio o Byte


wrapper
(Equivalentes a los
tipos primitivos
Short
Integer

Long

Float

pero como objetos.)

Double

Character

Boolean

Operadores Aritmticos.

Operadores Significado
Asociatividad
++ Incremento
Derecha a izquierda
-- Decremento
(+) (unario) unario + (x = +a)
- (unario) unario - (x = -a)
* multiplicacin
Izquierda a derecha
/ divisin
% Resto (mod)
+ suma Izquierda
a derecha
- resta
Cmo utilizar operadores aritmticos

public class DataType2 {


public static void main(String[] args) {
int j, k, m;
int d= 123;
j= d--; // j vale 122 y d vale 123
System.out.println("j= " + j);
k= ++d; // k vale 124 y d vale 124
System.out.println("k= " + k);
m= --d; // m vale 123 y d vale 123
System.out.println("m= " + m);

m= k % j; // operador Resto para los tipos int


// k=124 y j=122, por tanto, m= 2
System.out.println("m= " + m);
j= 5; k= 3; m= j/k; // Divisin entera: m= 1
System.out.println("m
= " + m);
System.exit(0);
}
}
Destacar que el operador % es de uso exclusivo entre enteros. 7%3 devuelve 1 ya que el
resto de dividir 7 entre 3 es 1. Al valor obtenido lo denominamos mdulo (en otros
lenguajes en vez del smbolo % se usa la palabra clave mod) y a este operador a veces se le
denomina operador mdulo.

Aunque en otros lenguajes existe un operador de exponenciacin, en Java no es as. Para


calcular una potencia podemos hacer varias cosas:

a) Recurrir a multiplicar n veces el trmino. Por ejemplo min3 lo podemos calcular como
min*min*min. Obviamente esto no es prctico para potencias de exponentes grandes.

b) Usar un bucle que d lugar a la repeticin de la operacin multiplicacin n veces, o usar


un mtodo que ejecute la operacin. Estas opciones las comentaremos ms adelante.

c) Usar herramientas propias del lenguaje que permiten realizar esta operacin. Esta
opcin la comentaremos ms adelante.

Las operaciones con operadores siguen un orden de prelacin o de precedencia que


determinan el orden con el que se ejecutan. Si existen expresiones con varios operadores
del mismo nivel, la operacin se ejecuta de izquierda a derecha. Para evitar resultados no
deseados, en casos donde pueda existir duda se recomienda el uso de parntesis para dejar
claro con qu orden deben ejecutarse las operaciones. Por ejemplo, si dudas si la expresin
3 * a / 7 + 2 se ejecutar en el orden que t deseas, especifica el orden deseado utilizando
parntesis: por ejemplo 3 * ((a / 7) + 2).

Referencias:

http://www.webtaller.com/manual-java/clase-math.php

http://www.aprenderaprogramar.com/index.php?
option=com_content&view=article&id=237:clase-math-api-java-funciones-
matematicas-trigonometricas-log-etc-redondeo-round-floor-ceil-
cu00906c&catid=58:curso-lenguaje-programacion-java-nivel-avanzado-
i&Itemid=180

http://www.aprenderaprogramar.com/index.php?
option=com_content&view=article&id=462:operadores-aritmeticos-en-
java-y-operador-mod-o-resto-de-una-division-entre-enteros-
cu00633b&catid=68:curso-aprender-programacion-java-desde-
cero&Itemid=188

Вам также может понравиться