Saturday, April 17, 2010

MANEJO DE LA CLASE: java.lang.Math

Que tal, en esta oportunidad postearé sobre un clase muy importante en lo que respecta cálculos Matemáticos y con la que se puede realizar muchas operaciones y redondeos muy buenos. El ejemplo que mostraré esta basado en 'NOTAS' de las cuales se procederá con los cálculos respectivos:

El código es el siguiente:

/**
* @author Cesar Ricardo.
* @clase: CalculodeNotas.java
* @descripción descripción de la clase.
* @author_web: http://frameworksjava2008.blogspot.com
http://viviendoconjavaynomoririntentandolo.blogspot.com
* @author_email: nombre del email del autor.
* @author_company: nombre de la compañía del autor.
* @fecha_de_creación: dd-mm-yyyy.
* @fecha_de_ultima_actualización: dd-mm-yyyy.
* @versión 1.0
*/
public class ManejoMath{

/**
* main
* @param argumentos
*/
public static void main( String... argumentos ){
ManejoMath calcular = new ManejoMath();
calcular.calcularNota();
}

/**
* calcularNota
*/
public void calcularNota(){

int notaMatematica = 10;
int notaLenguaje = -2;
double notaHistoria = 9.55;
double notaBiologia = 8.3;

//Valores Absolutos
imprimir( "----------- VALORES 'ABSOLUTOS' -----------" );
imprimir( "- MATEMATICA: [" + notaMatematica + "] nota 'ABSOLUTA': [" + this.getValorAbsoluto( notaMatematica ) + "]" );
imprimir( "- LENGUAJE: [" + notaLenguaje + "] nota 'ABSOLUTA': [" + this.getValorAbsoluto( notaLenguaje ) + "]" );
imprimir( "- HISTORIO: [" + notaHistoria + "] nota 'ABSOLUTA': [" + this.getValorAbsoluto( notaHistoria ) + "]" );
imprimir( "- BIOLOGIA: [" + notaBiologia + "] nota 'ABSOLUTA': [" + this.getValorAbsoluto( notaBiologia ) + "]" );

System.out.println( "" );

//Redondeo de cifras al siguiente numero entero
imprimir( "----------- VALORES 'REDONDEADOS' -----------" );
imprimir( "- MATEMATICA: [" + notaMatematica + "] nota 'REDONDEADO': [" + this.getRedondeo( notaMatematica ) + "]" );
imprimir( "- LENGUAJE: [" + notaLenguaje + "] nota 'REDONDEADO': [" + this.getRedondeo( notaLenguaje ) + "]" );
imprimir( "- HISTORIO: [" + notaHistoria + "] nota 'REDONDEADO': [" + this.getRedondeo( notaHistoria ) + "]" );
imprimir( "- BIOLOGIA: [" + notaBiologia + "] nota 'REDONDEADO': [" + this.getRedondeo( notaBiologia ) + "]" );

System.out.println( "" );

//El techo ("ceiling") de un número es el minimo entero mayor o igual
//al mismo numero. Un numero entero es su propio techo ("ceiling")
imprimir( "----------- VALORES 'CEILING' -----------" );
imprimir( "- MATEMATICA: El 'ceiling' de: [" + notaMatematica + "] es: [" + this.getMinimoEnteroMayorIgual( notaMatematica ) + "]" );
imprimir( "- LENGUAJE: El 'ceiling' de: [" + notaLenguaje + "] es: [" + this.getMinimoEnteroMayorIgual( notaLenguaje ) + "]" );
imprimir( "- HISTORIO: El 'ceiling' de: [" + notaHistoria + "] es: [" + this.getMinimoEnteroMayorIgual( notaHistoria ) + "]" );
imprimir( "- BIOLOGIA: El 'ceiling' de: [" + notaBiologia + "] es: [" + this.getMinimoEnteroMayorIgual( notaBiologia ) + "]" );

System.out.println( "" );

//El piso ("floor") de un numero es el entero mayor o igual al mismo numero.
//Un numero entero es su propio piso ("floor")
imprimir( "----------- VALORES 'FLOOR' -----------" );
imprimir( "- MATEMATICA: El 'floor' de: [" + notaMatematica + "] es: [" + this.getMayorIgual( notaMatematica ) + "]" );
imprimir( "- LENGUAJE: El 'floor' de: [" + notaLenguaje + "] es: [" + this.getMayorIgual( notaLenguaje ) + "]" );
imprimir( "- HISTORIO: El 'floor' de: [" + notaHistoria + "] es: [" + this.getMayorIgual( notaHistoria ) + "]" );
imprimir( "- BIOLOGIA: El 'floor' de: [" + notaBiologia + "] es: [" + this.getMayorIgual( notaBiologia ) + "]" );

System.out.println( "" );

//min() retorna el menor de los argumentos proporcionados.
imprimir( "----------- VALORES 'MINIMO' -----------" );
imprimir( "- El 'MINIMO' valor entre: [" + notaMatematica + ", " + notaLenguaje + "] es: [" + this.getValorMinimo( notaMatematica, notaLenguaje ) + "]" );
imprimir( "- El 'MINIMO' valor entre: [" + notaHistoria + ", " + notaBiologia + "] es: [" + this.getValorMinimo( notaHistoria, notaBiologia ) + "]" );
imprimir( "- El 'MINIMO' valor entre: [" + notaMatematica + ", " + notaHistoria + "] es: [" + this.getValorMinimo( notaMatematica, notaHistoria ) + "]" );
imprimir( "- El 'MINIMO' valor entre: [" + notaBiologia + ", " + notaLenguaje + "] es: [" + this.getValorMinimo( notaBiologia, notaLenguaje ) + "]" );
imprimir( "- El 'MINIMO' valor entre: [" + notaBiologia + ", " + notaBiologia + "] es: [" + this.getValorMinimo( notaBiologia, notaBiologia ) + "]" );

System.out.println( "" );

//max() retorna el mayor de los argumentos proporcionados
imprimir( "----------- VALORES 'MAXIMO' -----------" );
imprimir( "- El 'MAXIMO' valor entre: [" + notaMatematica + ", " + notaLenguaje + "] es: [" + this.getValorMaximo( notaMatematica, notaLenguaje ) + "]" );
imprimir( "- El 'MAXIMO' valor entre: [" + notaHistoria + ", " + notaBiologia + "] es: [" + this.getValorMaximo( notaHistoria, notaBiologia ) + "]" );
imprimir( "- El 'MAXIMO' valor entre: [" + notaMatematica + ", " + notaHistoria + "] es: [" + this.getValorMaximo( notaMatematica, notaHistoria ) + "]" );
imprimir( "- El 'MAXIMO' valor entre: [" + notaBiologia + ", " + notaLenguaje + "] es: [" + this.getValorMaximo( notaBiologia, notaLenguaje ) + "]" );
imprimir( "- El 'MAXIMO' valor entre: [" + notaBiologia + ", " + notaBiologia + "] es: [" + this.getValorMaximo( notaBiologia, notaBiologia ) + "]" );
}

//Imprimir datos.
void imprimir( String cadena ){
System.out.println( cadena );
}

/**
* getValorAbsoluto
* @param notaParam
* @return Number
*/
public Number getValorAbsoluto( Number notaParam ){

Number objetoNumero = 0;

if( notaParam instanceof Double ){
objetoNumero = Math.abs( Double.parseDouble( notaParam.toString() ) );
}
else if( notaParam instanceof Float ){
objetoNumero = Math.abs( Float.parseFloat( notaParam.toString() ) );
}
else if( notaParam instanceof Integer ){
objetoNumero = Math.abs( Integer.parseInt( notaParam.toString() ) );
}
else if( notaParam instanceof Long ){
objetoNumero = Math.abs( Long.parseLong( notaParam.toString() ) );
}

return objetoNumero;
}

/**
* getRedondeo
* @param notaParam
* @return Number
*/
public Number getRedondeo( Number notaParam ){

Number objetoNumero = 0;

if( notaParam instanceof Double ){
objetoNumero = Math.round( Double.parseDouble( notaParam.toString() ) );
}
else if( notaParam instanceof Float ){
objetoNumero = Math.round( Float.parseFloat( notaParam.toString() ) );
}
else if( notaParam instanceof Integer ){
objetoNumero = Math.round( Integer.parseInt( notaParam.toString() ) );
}

return objetoNumero;
}

/**
* getMayorIgual
* @param notaParam
* @return Number
*/
public Number getMayorIgual( Number notaParam ){

Number objetoNumero = 0;

if( notaParam instanceof Double ){
objetoNumero = Math.ceil( Double.parseDouble( notaParam.toString() ) );
}
else if( notaParam instanceof Integer ){
objetoNumero = Math.ceil( Integer.parseInt( notaParam.toString() ) );
}

return objetoNumero;
}


/**
* getMinimoEnteroMayorIgual
* @param notaParam
* @return Number
*/
public Number getMinimoEnteroMayorIgual( Number notaParam ){

Number objetoNumero = 0;

if( notaParam instanceof Double ){
objetoNumero = Math.floor( Double.parseDouble( notaParam.toString() ) );
}
else if( notaParam instanceof Integer ){
objetoNumero = Math.floor( Integer.parseInt( notaParam.toString() ) );
}

return objetoNumero;
}

/**
* getValorMaximo
* @param notaParam_01
* @param notaParam_02
* @return Number
*/
public Number getValorMaximo( Number notaParam_01, Number notaParam_02 ){

Number objetoNumero = 0;

if( (notaParam_01 instanceof Integer) && (notaParam_02 instanceof Integer) ){
objetoNumero = Math.max( Integer.parseInt( notaParam_01 + "" ),
Integer.parseInt( notaParam_02 + "" ) );
}
else if( (notaParam_01 instanceof Double) && (notaParam_02 instanceof Double) ){
objetoNumero = Math.max( Double.parseDouble( notaParam_01 + "" ),
Double.parseDouble( notaParam_02 + "" ) );
}
else if( (notaParam_01 instanceof Double) && (notaParam_02 instanceof Integer) ){
objetoNumero = Math.max( Double.parseDouble( notaParam_01 + "" ),
Integer.parseInt( notaParam_02 + "" ) );
}
else if( (notaParam_01 instanceof Integer) && (notaParam_02 instanceof Double) ){
objetoNumero = Math.max( Integer.parseInt( notaParam_01 + "" ),
Double.parseDouble( notaParam_02 + "" ) );
}

return objetoNumero;
}

/**
* getValorMinimo
* @param notaParam_01
* @param notaParam_02
* @return Number
*/
public Number getValorMinimo( Object notaParam_01, Object notaParam_02 ){

Number objetoNumero = 0;

if( (notaParam_01 instanceof Integer) && (notaParam_02 instanceof Integer) ){
objetoNumero = Math.min( Integer.parseInt( notaParam_01 + "" ),
Integer.parseInt( notaParam_02 + "" ) );
}
else if( (notaParam_01 instanceof Double) && (notaParam_02 instanceof Double) ){
objetoNumero = Math.min( Double.parseDouble( notaParam_01 + "" ),
Double.parseDouble( notaParam_02 + "" ) );
}
else if( (notaParam_01 instanceof Double) && (notaParam_02 instanceof Integer) ){
objetoNumero = Math.min( Double.parseDouble( notaParam_01 + "" ),
Integer.parseInt( notaParam_02 + "" ) );
}
else if( (notaParam_01 instanceof Integer) && (notaParam_02 instanceof Double) ){
objetoNumero = Math.min( Integer.parseInt( notaParam_01 + "" ),
Double.parseDouble( notaParam_02 + "" ) );
}

return objetoNumero;
}
}

La salida en consola luego de la ejecución de dicha clase es la siguiente:

----------- VALORES 'ABSOLUTOS' -----------
- MATEMATICA: [10] nota 'ABSOLUTA': [10]
- LENGUAJE: [-2] nota 'ABSOLUTA': [2]
- HISTORIO: [9.55] nota 'ABSOLUTA': [9.55]
- BIOLOGIA: [8.3] nota 'ABSOLUTA': [8.3]

----------- VALORES 'REDONDEADOS' -----------
- MATEMATICA: [10] nota 'REDONDEADO': [10]
- LENGUAJE: [-2] nota 'REDONDEADO': [-2]
- HISTORIO: [9.55] nota 'REDONDEADO': [10]
- BIOLOGIA: [8.3] nota 'REDONDEADO': [8]

----------- VALORES 'CEILING' -----------
- MATEMATICA: El 'ceiling' de: [10] es: [10.0]
- LENGUAJE: El 'ceiling' de: [-2] es: [-2.0]
- HISTORIO: El 'ceiling' de: [9.55] es: [9.0]
- BIOLOGIA: El 'ceiling' de: [8.3] es: [8.0]

----------- VALORES 'FLOOR' -----------
- MATEMATICA: El 'floor' de: [10] es: [10.0]
- LENGUAJE: El 'floor' de: [-2] es: [-2.0]
- HISTORIO: El 'floor' de: [9.55] es: [10.0]
- BIOLOGIA: El 'floor' de: [8.3] es: [9.0]

----------- VALORES 'MINIMO' -----------
- El 'MINIMO' valor entre: [10, -2] es: [-2]
- El 'MINIMO' valor entre: [9.55, 8.3] es: [8.3]
- El 'MINIMO' valor entre: [10, 9.55] es: [9.55]
- El 'MINIMO' valor entre: [8.3, -2] es: [-2.0]
- El 'MINIMO' valor entre: [8.3, 8.3] es: [8.3]

----------- VALORES 'MAXIMO' -----------
- El 'MAXIMO' valor entre: [10, -2] es: [10]
- El 'MAXIMO' valor entre: [9.55, 8.3] es: [9.55]
- El 'MAXIMO' valor entre: [10, 9.55] es: [10.0]
- El 'MAXIMO' valor entre: [8.3, -2] es: [8.3]
- El 'MAXIMO' valor entre: [8.3, 8.3] es: [8.3]

No comments: