Anuncios

Bienvenidos sean a este post, hoy veremos otro de los metodos que posee para redondear.

Anuncios

Este es similar al visto en ceil pero en sentido inverso dado que el signo tambien lo afecta pero si el signo es negativo en lugar de redondear al entero mas pequeño lo hara al mas grande y en caso de ser positivo lo hace al entero mas pequeño, tambien pertenece a la clase Math como en el caso de ceil, por ultimo el valor que nos devuelve sera de tipo double:

floor.java

public class floor
{
	public static void main(String [] args)
	{
		double d = -50.25;
		float f = 100.65f;

		System.out.println(Math.floor(d));
		System.out.println(Math.floor(f));
	}
}
Anuncios

En este caso crearemos dos variables de tipo double y float donde le asignaremos valores con distintos signos, lo siguiente sera mostrar el redondeo de ambos por medio de floor, observen como llamamos primero a la clase Math y luego el metodo, con todo esto comentado pasemos a compilarlo y ver su salida:

tinchicus@dbn001vrt:~/lenguajes/java$ java floor 
-51.0
100.0
tinchicus@dbn001vrt:~/lenguajes/java$
Anuncios

Si observan en el caso de signos negativos nos redondea hacia el numero mas grande y en los postitivos al mas chico, en este post vimos como adaptar a nuestro codigo para que redondee al entero mas bajo para signos positivos, vamos a tomar ese concepto y vamos a aplicar tanto a ceil como floor para que sin importar el signo nuestro codigo siempre devuelva el entero mas bajo, volvamos al archivo floor.java y modifiquemos el codigo de la siguiente manera:

floor.java

public class floor
{
	public static void main(String [] args)
	{
		double [] d = { 10.3, -100.25, 30.25, 11.0, -25.75 };

		for (int i = 0; i < d.length; i++)
		{
			if (d[i]<0)
			{
				System.out.println("Pos[" + i + "]: " 
					+ Math.ceil(d[i]) + "-" + d[i]);
			}
		 	else
			{
				System.out.println("Pos[" + i + "]: "
					+ Math.floor(d[i]) + "-" + d[i]);
			}
		}
	}
}
Anuncios

En este caso eliminamos todo el codigo anterior y lo primero que haremos sera crear un array de tipo double con algunos valores que alternan entre positivos y negativos, lo siguiente sera un bucle for donde pasaremos por todo el array, en este chequearemos por medio de un condicional si el valor en la posicion del array es menor a 0 (es negativo) y en caso de ser verdadero nos muestra la posicion actual, seguido del redondeo hecho con ceil y por ultimo el valor original de la posicion, luego tenemos el caso del else donde asumimos que el numero es positivo o cero y haremos exactamente lo mismo pero en lugar de usar ceil usaremos a floor pero la linea es exactamente la misma, con esto solo nos resta compilarlo y probarlo para ver su salida:

tinchicus@dbn001vrt:~/lenguajes/java$ java floor 
Pos[0]: 10.0-10.3
Pos[1]: -100.0--100.25
Pos[2]: 30.0-30.25
Pos[3]: 11.0-11.0
Pos[4]: -25.0--25.75
tinchicus@dbn001vrt:~/lenguajes/java$
Anuncios

Observen como funciono de acuerdo a nuestra necesidad, en caso de necesitar que sea al reves, es decir que devuelva el valor del entero mas grande solamente deben invertir las funciones en los condicionales.

Anuncios

En resumen, hoy hemos visto a floor, como trabaja, como trabaja de forma inversa a ceil, y como por medio de este hemos podido mejorar el ejemplo realizado en este post, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Donación

Es para mantenimento del sitio, gracias!

$1.00