in

matemáticas – ¿Cómo realizar una división de enteros y obtener el resto por separado en JavaScript?

apple touch icon@2

JavaScript calcula el piso de los números negativos y el resto de los números no enteros, siguiendo las definiciones matemáticas para ellos.

FLOOR se define como «el número entero más grande menor que el parámetro», así:

  • números positivos: PISO (X) = parte entera de X;
  • números negativos: FLOOR (X) = parte entera de X menos 1 (porque debe ser MÁS PEQUEÑO que el parámetro, es decir, ¡más negativo!)

RESTANTE se define como el «sobrante» de una división (aritmética euclidiana). Cuando el dividendo no es un número entero, el cociente tampoco suele ser un número entero, es decir, no hay resto, pero si el cociente está obligado a ser un número entero (y eso es lo que sucede cuando alguien intenta obtener el resto o módulo de un número de punto flotante), obviamente habrá un «sobrante» no entero.

JavaScript calcula todo como se esperaba, por lo que el programador debe tener cuidado de hacer las preguntas adecuadas (¡y la gente debe tener cuidado de responder lo que se pregunta!) La primera pregunta de Yarin NO fue «cuál es la división entera de X por Y», sino, en cambio, «el número ENTERO de veces que un entero dado ENTRA en otro». Para números positivos, la respuesta es la misma para ambos, pero no para números negativos, porque la división entera (dividendo por divisor) será -1 más pequeña que las veces que un número (divisor) «entra» en otro (dividendo). En otras palabras, FLOOR devolverá la respuesta correcta para una división entera de un número negativo, ¡pero Yarin no preguntó eso!

gammax respondió correctamente, ese código funciona según lo solicitado por Yarin. Por otro lado, Samuel está equivocado, no hizo las matemáticas, supongo, o habría visto que funciona (además, no dijo cuál fue el divisor de su ejemplo, pero espero que sea así). 3):

Resto = X% Y = -100% 3 = -1

Entra en = (X – Resto) / Y = (-100 – -1) / 3 = -99 / 3 = -33

Por cierto, probé el código en Firefox 27.0.1, funcionó como se esperaba, con números positivos y negativos y también con valores no enteros, tanto para dividendo como para divisor. Ejemplo:

-100,34 / 3,57: GoesInto = -28, resto = -0,3800000000000079

Sí, me di cuenta, hay un problema de precisión allí, pero no tuve tiempo de verificarlo (no sé si es un problema con Firefox, Windows 7 o con la FPU de mi CPU). Sin embargo, para la pregunta de Yarin, que solo involucra números enteros, el código de gammax funciona perfectamente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Programa de lista vinculada en C

gfg 200x200 min

Diferencias entre JDK, JRE y JVM