PHP con el paso de los años se ha convertido en un lenguaje muy usado en la red para crear sitios web con prácticamente infinidad de opciones. Y aunque php cumple con muchísimas de nuestras espectactivas en ocasiones se queda algo corto con sus funciones, afortunadamente siempre es posible reemplazar o extender su funcionalidad mediante código fuente propio, ese es el caso de las funciones de hoy: roundtoup y roundtodown.
PHP cuenta con funciones para redondear números, pero es una función (desde mi punto de vista personal) no muy clara. Lo que se pretende con las funciones roundtoup/roundtodown es redondear un número hacia arriba o hacia abajo si es decimal, no importa si la fracción es próxima o no a un punto, si tiene una fracción entonces sube o baja, no más.
Publicidad
Función roundtoup
function roundtoup($number)
{
if((double)$number == 0)
return 0;
else
{
if((int)strpos("_".trim($number), ".") > 0)
{
$integer = substr(trim($number), 0, strpos(trim($number), "."));
$integer++;
}
else
$integer = $number;
return $integer;
}
}
Como pueden ver la función roundtoup extrae del número la parte entera y lo incrementa en una unidad, así pues entonces podemos hacer que el número se redondé hacia arriba, sin importar si la parte fraccionaria se aproxima al siguiente valor o no, de lo contrario, si no hay fracción se retorna el número original.
Función roundtodown
function roundtodown($number)
{
if((double)$number == 0)
return 0;
else
{
if((int)strpos("_".trim($number), ".") > 0)
$integer = substr(trim($number), 0, strpos(trim($number), "."));
else
$integer = $number;
return $integer;
}
}
La función roundtodown es más simple, se basa en la misma idea, se extrae del número la parte entera, pero no se incrementa en ninguna unidad, solo se retorna esa sección pues lo que queremos es redondear hacia abajo, sin importar si la parte fraccionaria se aproxima al valor anterior o no, de lo contrario, si no hay fracción se retorna el número original.
PHP cuenta con funciones para redondear números, pero es una función (desde mi punto de vista personal) no muy clara. Lo que se pretende con las funciones roundtoup/roundtodown es redondear un número hacia arriba o hacia abajo si es decimal, no importa si la fracción es próxima o no a un punto, si tiene una fracción entonces sube o baja, no más.
Función roundtoup
function roundtoup($number)
{
if((double)$number == 0)
return 0;
else
{
if((int)strpos("_".trim($number), ".") > 0)
{
$integer = substr(trim($number), 0, strpos(trim($number), "."));
$integer++;
}
else
$integer = $number;
return $integer;
}
}
Como pueden ver la función roundtoup extrae del número la parte entera y lo incrementa en una unidad, así pues entonces podemos hacer que el número se redondé hacia arriba, sin importar si la parte fraccionaria se aproxima al siguiente valor o no, de lo contrario, si no hay fracción se retorna el número original.
Función roundtodown
function roundtodown($number)
{
if((double)$number == 0)
return 0;
else
{
if((int)strpos("_".trim($number), ".") > 0)
$integer = substr(trim($number), 0, strpos(trim($number), "."));
else
$integer = $number;
return $integer;
}
}
La función roundtodown es más simple, se basa en la misma idea, se extrae del número la parte entera, pero no se incrementa en ninguna unidad, solo se retorna esa sección pues lo que queremos es redondear hacia abajo, sin importar si la parte fraccionaria se aproxima al valor anterior o no, de lo contrario, si no hay fracción se retorna el número original.
Procedencia de las imágenes: |
File: Icono PHP URL: http://techtastico.com/files/2008/06/php-logo.png Licencia: Creative Commons |
¿Te gustó este post?, entonces si lo deseas puedes apoyarnos para continuar con nuestra labor, gracias.
En realidad es bastante más sencillo (y eficiente), usar las funciones nativas de PHP.
ResponderBorrarPor ejemplo round (http://php.net/manual/es/function.round.php), ofrece un tercer parámetro opcional que indica el modo de redondeo, incluyendo hacia arriba y hacia abajo como en el código que muestras; pero además hacia el siguiente par, o el siguiente impar.
ohhh, mira que interesante, quizá me faltó investigar un poco más jejeje, gracias por tu aporte.
Borrar