¿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

#6 Blue
09/04/2010 - 18:51 | Informe spam
perdonadme pero yo con las matematicas soy un 0 patatero ¿alguien tien algo
hecho? no puede ser que esto solo me ocurra a miiiiiiiiiiiiiiiii¡¡¡¡


gracias

"Patxi Sanz" <patxisanz[ARROBA]yahoo[PUNTO]es> escribió en el mensaje
news:umpYxr$
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
#7 Juan M. Afan de Ribera
09/04/2010 - 19:44 | Informe spam
Lo que yo haría sería quitarles los decimales, o, dicho de otra manera,
correr la coma (multiplicar por 10) igual número de veces en ambos números,
hasta que ninguno tenga decimales. Después, sobre esos números aplicaría la
función Mod, et voilà...

No se... pue que sea un poco chapuza, pero tal vez esto podría funcionar con
una función como esta (numero1 sería el dividendo y numero2 seria el
divisor:

Function ModDecimal(dividendo As Double, divisor As Double) As Long
Dim numDec1 As Long
Dim numDec2 As Long
Dim cadena1 As String
Dim cadena2 As String
Dim num1 As Long
Dim num2 As Long
Dim correrComa As Long

' convertimos dividendo a cadena
cadena1 = Str(dividendo)
' sacamos el número con la parte decimal
cadena1 = Mid(cadena1, InStr(cadena1, ".") + 1)
' averiguamos el número de decimales
numDec1 = Len(cadena1)

' lo mismo para el divisor
cadena2 = Str(divisor)
cadena2 = Mid(cadena2, InStr(cadena2, ".") + 1)
numDec2 = Len(cadena2)

' comprobamos cual de los dos números tiene más decimales
If numDec1 >= numDec2 Then
correrComa = numDec1
Else
correrComa = numDec2
End If
' aplicamos la función Mod sobre los mismos números
' pero sin parte decimal
ModDecimal = (dividendo * (10 ^ correrComa)) Mod (divisor * (10 ^
correrComa))

End Function

A ver si esto sirve...
Juan M Afan de Ribera
:-)

"Bluey" escribió en el mensaje de
noticias:uJIOn6#
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
#8 José Mª Fueyo
10/04/2010 - 00:11 | Informe spam
¡Hombre Juan! dichosos los ojos que te leen
¡Bienvenido a esta tu casa!

Salu2
José Mª Fueyo
[MS MVP Access]


__________ Información de ESET Smart Security, versión de la base de firmas de virus 5014 (20100409) __________

ESET Smart Security ha comprobado este mensaje.

http://www.eset.com
Respuesta Responder a este mensaje
#9 Bluey
10/04/2010 - 09:16 | Informe spam
Hola de nuevo, he estado haciendo pruebas con esto del resto y he hecho esta
funcion

Private Function CalcularResto(nDividendo As Single, nDivisor As Single) As
Single
CalcularResto = nDividendo - ((Round(nDividendo / nDivisor)) * nDivisor)
End Function


con excel me funciona bien ,pero con access si hago
CalcularResto(100.8,33.6) me da un valor de resto de 7,629395E-06 supongo
que es por la dichosa precision decimal pero si tenia que dar cero ya que el
resultado de dividir 100.8 entre 33.6 son 3 si multiplico 3 por el divisor
(33.6) son 100.8 y si lo resto a 100.8 tendria que dar un valor de
CEROOOOOOOOOOOOOOOOOOO¡¡¡ llevo 2 dias con el dichoso resto, ¿como es
posible que acces no pueda calcularlo con decimales? a veces odias a access

gracias por vuestra ayuda

saludos



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

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com
Respuesta Responder a este mensaje
#10 Juan M. Afan de Ribera
10/04/2010 - 13:28 | Informe spam
Hola Chema :-)

gracias por la bienvenida. Paso a menudo por estas news, pero sois demasiado
rápidos al responder (o yo demasiado lento, jejeje). Siempre lo digo, pero...
a ver si me reengancho a las ñus. Lo que pasa es que la práctica de responder
preguntas se pierde y uno ya no es tan sagaz como solía... Pero bue,

Juan M. Afan de Ribera
:-)

"José Mª Fueyo" wrote:

Hombre Juan! dichosos los ojos que te leen
Bienvenido a esta tu casa!

Salu2
Jos M Fueyo
[MS MVP Access]


__________ Informacin de ESET Smart Security, versin de la base de firmas de virus 5014 (20100409) __________

ESET Smart Security ha comprobado este mensaje.

http://www.eset.com



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida