¿Como funciona mod?

08/04/2010 - 11:37 por Bluey | Informe spam
Hola amigos, estoy intentando averiguar si el resto de una division es 0.
Teng oesta instruccion A=nPr Mod 33.6 donde npr vale 100,80 y resulta que A
me da 33 cuando el resto es 0 (3 * 33.60.80)
creo que el problema viene por las decimales pero no se como solucionarlo,
seguro que es una tonteria. Si alguien sabe..

gracias



__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5009 (20100408) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com

Preguntas similare

Leer las respuestas

#1 José Mª Fueyo
08/04/2010 - 13:10 | Informe spam
Hola
¿Como has definido la variable nPr?

Salu2
José Mª Fueyo
[MS MVP Access]
Respuesta Responder a este mensaje
#2 Ignacio
09/04/2010 - 09:18 | Informe spam
¡Hola, Bluey!

El operador Mod funciona redondeando previamente a enteros los
operandos que utiliza.
En el caso nPr Mod 33.6 donde nPr vale 100.80, primero rdondea el
100.80 a 101 y luego el 33.6 a 34. De modo que la operación que
realiza es 101/34 y devuelve el resto, o sea, 33.
Si lo que quieres es obtener el resto modular con decimales en los
operandos utiliza la siguente fórmula:
A = nPr/33.6-Int(Round(nPr/33.6, 15))
Si A es 0 el resto modular es 0. Si no el resto es (nPr/33.6-
Int(Round(nPr/33.6, 15)))*33.6
La función Round es necesaria debido a la pérdida de precisión ya que
las operaciones se realizan en binario y el resultado con decimales no
es siempre exacto.
Se puede comprobar observando que el resultado de la operación
100.8/33.6-3 no es igual a 0 sino -2,11419423634673E-16. Por eso
utilizo en la fórmula el redondeo a la cifra 15 para evitarlo.

Espero que te sirva de ayuda.

Un saludo,
Ignacio.
Respuesta Responder a este mensaje
#3 Bluey
09/04/2010 - 11:36 | Informe spam
nPr es double

gracias

"José Mª Fueyo" escribió en el mensaje
news:
Hola
¿Como has definido la variable nPr?

Salu2
José Mª Fueyo
[MS MVP Access]

__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 5012 (20100409) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com





__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5012 (20100409) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com
Respuesta Responder a este mensaje
#4 Bluey
09/04/2010 - 16:12 | Informe spam
he buscado en la ayuda de access y dice que los numeros en coma flotante los
redondea a enteros, con lo cual no me sirve la funcion mod ¿como se podria
hacer esto entonces?

Gracias

"Bluey" escribió en el mensaje
news:%
nPr es double

gracias

"José Mª Fueyo" escribió en el mensaje
news:
Hola
¿Como has definido la variable nPr?

Salu2
José Mª Fueyo
[MS MVP Access]

__________ Información de ESET NOD32 Antivirus, versión de la base de
firmas de virus 5012 (20100409) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com





__________ Información de ESET NOD32 Antivirus, versión de la base de
firmas de virus 5012 (20100409) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com









__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5012 (20100409) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com
Respuesta Responder a este mensaje
#5 Patxi Sanz
09/04/2010 - 17:40 | Informe spam
Siempre puedes crear tu propia función para hacer lo que precisas.

Un saludo,


Patxi Sanz
Tudela (NA)
http://www.pasa.es.tt/
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida