Announcement

Collapse
No announcement yet.

modulo auf grosse zahlen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • modulo auf grosse zahlen

    hallo beisammen,

    ich habe zum zwecke einer prüfsummenberechnung
    unter anderem die aufgabe,
    bei der teilung einer 24-stelligen zahl durch 97
    den rest zu ermittlen. (also ganz platt gesagt: zahl mod 97)
    allerdings lässt sich der mod-operator nur auf integer-typen
    anwenden und eine 24-stellige zahl ist in keinem integer-typ
    unterzubringen.
    auch selbst den rest ermitteln,
    also "zahl - trunc(zahl/97)*97"
    funktioniert aus gleichen gründen nicht.

    weiß jemand rat?

    vielen dank im voraus für eure antworten
    und viele grüße aus dem unglaublich sonnigen
    bayern.

    ---------------------------------------------------------------------------------------------------
    wir haben eine lösung gefunden - somit ist die frage als hinfällig zu betrachten
    ---------------------------------------------------------------------------------------------------
    Zuletzt editiert von linsmayer; 03.05.2007, 14:46. Reason: Lösung gefunden

  • #2
    Wäre schön, wenn Du die Lösung hier posten könntest, damit andere Benutzer nicht das gleiche Problem noch einmal zeitintensiv lösen müssen.

    Comment


    • #3
      gerne carsten.

      ich gebe hier allerdings erstmal nur den quellcode an und
      auch nur für mod 97.
      man könnte die funktion natürlich auch flexibel, für beliebiges modulo
      aufbauen, aber wir brauchen bei uns nur die 97.


      function Modulo97(strZahl: String) : Integer;
      var
      int3Stellen: integer;
      begin
      while (length(strZahl) > 3) do begin
      int3Stellen := StrToInt(copy(strZahl, 1, 3));
      if int3Stellen >= 970 then
      int3Stellen := int3Stellen - 970
      else if int3Stellen >= 97 then
      int3Stellen := int3Stellen - 97;
      Delete(strZahl, 1, 3);
      strZahl := IntToStr(int3Stellen) + strZahl;
      end;
      result := StrToInt(strZahl) mod 97;
      end;
      Zuletzt editiert von linsmayer; 26.06.2007, 13:17.

      Comment


      • #4
        Hallo zusammen,

        sorry wenn ich diesen Thread totengräbermäßig nochmal hochhole, aber die Funktion von linsmayer rechnet falsch.

        Beispielsweise kommt bei modulo97('340500000000721522131400') = 89 heraus anstelle 18
        modulo97('700901001234567890131400') ergibt 50 anstelle 90

        Wie ihr ahnen könnt geht es um die IBAN Berechnung und ich stehe vor dem Problem, dass ich die Modulo-Funktion leider nicht auf Floatwerte anwenden kann.

        Vielen Dank schonmal für die Hilfe.

        Comment


        • #5
          Seit wann braucht man einen float für eine IBAN Prüfung?
          http://www.marquardtnet.info/cecke/q...quicky_62.html
          http://de.wikipedia.org/wiki/Interna...Account_Number
          http://www.iban.de/iban-pruefsumme.html
          Christian

          Comment

          Working...
          X