Obtenga el resto solo de una división usando PHP

2 minutos de lectura

Avatar de usuario de X10nD
X10nD

estoy dividiendo 19/5 por donde he usado 19/5 pero no puedo conseguir el resto solo.

Como lo consigo.

gracias jean

  • ¿Por qué el 19 % 5 no devuelve lo que busca? Esto debería devolver 4.

    – Voluntad A

    17 de julio de 2010 a las 19:37

  • Eso devuelve el valor redondeado que es 4

    – X10nD

    17 de julio de 2010 a las 19:39

  • @Jean: pero eso es exactamente el resto de 19 dividido por 5. Además, ¿por qué revirtió mi edición de su error tipográfico?

    – BoltClock

    17 de julio de 2010 a las 19:40


  • estoy usando 19/5 no 19%5

    – X10nD

    17 de julio de 2010 a las 19:41

  • 4 es el resto. No está redondeado.

    – mattbasta

    17 de julio de 2010 a las 19:41

Avatar de usuario de Mark Baker
marca panadero

echo 19 % 5;

debería devolver 4, que es el resto de 19/5 (3 rem 4) No es necesario utilizar el suelo, porque el resultado de una operación de módulo siempre será un valor entero.

Si desea el resto cuando trabaja con valores de coma flotante, entonces PHP también tiene la función fmod():

echo fmod(19,5.5);

EDITAR

Si quieres el resto como decimal:

cualquiera

echo 19/5 - floor(19/5);

o

echo (19 % 5) / 5

ambos devolverán 0.8

  • solo necesito el valor decimal

    – X10nD

    17 de julio de 2010 a las 19:42

  • Para que conste, la última técnica mencionada es la más rápida, ya que se realizan menos operaciones de punto flotante.

    – mattbasta

    21 de julio de 2010 a las 2:44

  • ¿Por qué esta no es la respuesta aceptada? Necesitamos una función de PHP para mostrar la lógica de por qué no se acepta la mejor respuesta.

    – David

    13 de enero de 2017 a las 19:59

Avatar de usuario de Sadat
Sadat

Por favor pruebalo-

  $tempMod = (float)($x / $y);
  $tempMod = ($tempMod - (int)$tempMod)*$y;

Dependiendo del idioma que esté usando, % puede no ser el operador de módulo. Asumiré que estás usando PHP, en cuyo caso es %.

Por lo que puedo ver, no hay necesidad de usar floor() con módulo entero, siempre devolverá un número entero. Puedes quitarlo con seguridad.

Para mí, parece que no son las matemáticas las que te están dando problemas, es el código que las rodea. Deberá publicar más código; el código que has puesto está bien.

Editar:

No está buscando el resto, está buscando el valor decimal sobrante. No tiene nombre.

$leftover = 19 / 5;
$leftover = $leftover - floor($leftover);

Esto debería ser lo que estás buscando.

  • solo necesito el valor decimal

    – X10nD

    17 de julio de 2010 a las 19:41

  • Se llama la fracción.

    – aros

    16 de diciembre de 2014 a las 14:07

¿Ha sido útil esta solución?