FMOD: Obtener resto de una división en PHP

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:
-
. (50108890001 % 62)
-
. "<br>"
-
. "Usamos fmod: "
-
. 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 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 ![]()
Facebook
Add to favorites
LinkedIn
Meneame
Digg
PDF
Google Bookmarks









Muy bien, por lo que veo solo esta disponible a partir de la versión php 4.2 , antes se hacia a “pelo” no ?
Efectivamente, Señor Barbio, como puede usted leer en la documentación enlazada, esta función se añadió en la versión 4.2 de PHP.
Muchas gracias por su comentario
Gracias, me estaba volviendo loco.
Saludos
La verdad es que si que te quedas loco cuando no obtienes el resultado esperado y hasta que caes en el tamaño del valor devuelto… pero en fin, lo bueno que tiene esto del PHP es que siempre hay alguien que ha tenido el mismo problema que tu antes
jejeje
Un saludo y gracias por el comentario!!