Inicio > php, Programming, Tips > FMOD: Obtener resto de una división en PHP

FMOD: Obtener resto de una división en PHP

Viernes, 25 de febrero de 2011 Dejar un comentario Ir a comentarios
PHP fmod

Funciones ocultas de PHP

Hola ElePHPantes! Aquí andamos un día más para traeros las aventuras y desventuras que nos vamos encontrando en nuestro día a día phpero: de cómo se puede uno tirar 40 minutos o más para obtener el resto de una división… :O

Sí amigos, 40 minutos… porque… ¿Cómo se obtiene el resto de una división en PHP? Muchos me diréis que con ‘%’ y podría valeros, pero resulta que cuando tenemos un número grande, este operador nos deja tirados como las colillas. Hasta las narices acabé, y me negaba a calcularlo “a mano”, me parecía demasiado bruto. Pues gracias a mis compis, en especial a Alejandro, alias el niño de Jeré, dimos con una función desconocida para nosotros: fmod.

El problema que tiene el % es que antes de realizar la operación, transforma los operandos en int, de modo que si el número es muy grande se fastidia el invento ya que no podemos representarlo. Fmod en cambio trabaja con float, con lo que evitamos este problema del tamaño del int. Realmente esta función es usada para poder calcular el resto de una división donde alguno (o ambos) de los operandos tiene decimales, pero nos viene como anillo al dedo para poder obtener lo que necesitábamos: el resto de una división de números altos.

Os dejo aquí un ejemplo:

echo  “Usamos %: “
  1.         . (50108890001 % 62)
  2.         . "<br>"
  3.         . "Usamos fmod: "
  4.         . fmod(50108890001, 62);

Aquí vemos un claro ejemplo de cómo con el % obtenemos un resultado no deseado, mientras que don la recién descubierta fmod, tenemos el verdadero resto de la división entera. La salida producida sería la siguiente.

Usamos %: -33
  1. Usamos fmod: 15

Pues eso es todo, una vez más, espero que os sirva de ayuda como me ha servido a mi, y que hayáis dado con ella antes de lo que lo hice yo, jeje.

Un saludo y muchas gracias por vuestra atención ;)

Features Stats Integration Plugin developed by YD