Avatar billede rvm Nybegynder
26. september 2007 - 11:23 Der er 4 kommentarer og
1 løsning

Hvorfor giver dette overflow

Hej

Jeg er ved at udregne et IBAN nummer og skal i den forbindelse lave nedenstående modulus tjek, men det giver overflow.

Sub KontroCiffer()
  svar = 370400440532013000131400 Mod 97
end sub

Hvad skal jeg gøre anderledes?
Avatar billede jlemming Nybegynder
26. september 2007 - 11:39 #1
Tallet er nu nok for stor, har lige prøvet med denne formel, som er det samme. Men den virker hellere ikke. beklager
=3,70400440532013E+23 - 97*INT(3,70400440532013E+23/97)
MOD(n, d) = n - d*INT(n/d)
Avatar billede rvm Nybegynder
26. september 2007 - 12:21 #2
Fandt denne via google, der virker :-)

http://groups.google.dk/group/microsoft.public.access.formscoding/browse_thread/thread/eda5e190779cd710/07765dc7412ead39?hl=da&lnk=gst&q=mod+10%2C97&rnum=1#07765dc7412ead39

Function BigMod(ByVal strNum As String, ByVal n As Long) As Long
'--------------------------------------------------
'Returns "strNum Mod n"
'--------------------------------------------------
Dim nPos As Integer    'pointer into strNum
Dim lngNum As Long    'numeric value of 6 digit substring
Dim lngTotal As Long  'holds an intermediate sum
Dim lng1E6ModN As Long 'holds 1E6 | n
Dim lngMModN As Long  'intermediate value used to calculate 10^(6(n+1)) | n from 10^(6n) | n


lng1E6ModN = 1000000 Mod n
nPos = Len(strNum)
lngMModN = 1


'work through strNum from right to left, 6 digits at a time
Do While nPos > 5  'Note: nPos points to the rightmost digit of the group
  lngNum = CLng(Mid$(strNum, nPos - 5, 6))
  lngTotal = lngTotal + ((lngNum * lngMModN) Mod n)
  lngMModN = (lngMModN * lng1E6ModN) Mod n
  nPos = nPos - 6
Loop
If nPos <> 0 Then
  'deal with any remaining digits
  lngNum = CLng(Mid$(strNum, 1, nPos))
  lngTotal = lngTotal + (lngNum * lngMModN) Mod n
End If
  BigMod = lngTotal Mod n
End Function
Avatar billede rvm Nybegynder
26. september 2007 - 12:24 #3
Den virker ved at dele tallet op i mindre tal, da tallet ganske rigtigt er for stort.
Avatar billede jlemming Nybegynder
26. september 2007 - 12:28 #4
Det forresten ud til at min også virker alligevel, resultatet giver bare 0
Avatar billede rvm Nybegynder
26. september 2007 - 12:30 #5
Så virker den jo ikke :-) Resultatet skal være 9 :-))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester