rainghost Geschrieben 8. Juli 2004 Geschrieben 8. Juli 2004 Ich habe eine 24 stellige Zahl (integer), von der ich modulo (%) 97 rausfinden möchte. Als Ergebnis der Berchnung kommt immer "0" raus. (200800000970375700131400 % 97) Ich glaube es liegt daran, dass die Zahl viel zu groß für PHP ist. Liege ich richtig? Gibt es eine möglichkeit den Rest (modulo) dieser Zahl in PHP rauszufinden? MfG
kLeiner_HobBes Geschrieben 8. Juli 2004 Geschrieben 8. Juli 2004 Ähmm .. wie speicherst du denn diese Zahl?? Da brauchst du ja ungefähr 78 Bits für. Ich meine, daß PHP maximal +/- 2 Mia., also signed 32bit macht. Und selbst wenn du einen 64-Bit-Prozessor hast, reicht das net Hast du diese Int-Zahl denn mal ausgegeben? Steht dann immer noch 200800000970375700131400 drin?
kills Geschrieben 8. Juli 2004 Geschrieben 8. Juli 2004 gibt es keine möglichkeit, die zahl vielleicht umzurechnen in eine andere einheit etc?
rainghost Geschrieben 8. Juli 2004 Autor Geschrieben 8. Juli 2004 Wenn ich die Zahl ausgebe wird sie so angezeigt: 2.0080000097038E+023
rainghost Geschrieben 8. Juli 2004 Autor Geschrieben 8. Juli 2004 Frage ist jetzt: Wie kriege ich das Modullo dieser Zahl raus? 200800000970375700131400
kLeiner_HobBes Geschrieben 8. Juli 2004 Geschrieben 8. Juli 2004 Wie du an deiner Ausgabe siehst, ist die Zahl nicht mehr vollständig gespeichert. Also wirst du auch kein genaues Modulo herausbekommen. Natürlich kannst du dir einen eigenen Algorithmus schreiben, der solche Zahlen im Textformat entgegennimmt und dir das dann ausrechnet. Übrigens, 200800000970375700131400 modulo 97 ist 10.
kills Geschrieben 8. Juli 2004 Geschrieben 8. Juli 2004 was ist das für eine Zahl? Was beschreibt sie? Welche Einheit?
rainghost Geschrieben 8. Juli 2004 Autor Geschrieben 8. Juli 2004 das ist eine IBAN Kontonummer. Ich bin gerade dabei einen IBAN-Rechner zu programmieren. Um die Prüfziffer herauszufinden, brauche ich das modulo.
kLeiner_HobBes Geschrieben 8. Juli 2004 Geschrieben 8. Juli 2004 Hier ist der Code:$ktnr = "200800000970375700131400"; $temp = ""; $teiler = 97; $i = 0; while ($i < strlen($ktnr)) { do { $temp.=$ktnr{$i++}; $erg = (int)$temp % $teiler; } while ( $erg == (int)$temp && $i < strlen($ktnr) ); $temp = $erg; } print "Modulo: ".$temp;[/PHP] ermittelt aber wirklich nur das Modulo. Wenn du jetzt noch das Ganzzahl-Divisionsergebnis dabeihaben willst, mußt du das selber einbauen HTH Benjamin
rainghost Geschrieben 8. Juli 2004 Autor Geschrieben 8. Juli 2004 Super, danke schön! Die Zeile: $temp.=$ktnr{$i++}; 1. Was bedeutet der Punkt hinter $temp? 2. Was macht {$i++} Dass ++ ein Hochzählen um eins ist, weiß ich. Aber was macht dieses {$i++} mit der Variable $ktnr?
kLeiner_HobBes Geschrieben 8. Juli 2004 Geschrieben 8. Juli 2004 also: 1. der .= Operator hängt dem links davon stehenden String den Ausdruck, der rechts steht, dran. 2. mit den geschweiften Klammern greife ich auf den Buchstaben des Strings zu, und zwar dem, dessen Position in den Klammern angegeben ist. Das ist wie bei C der []-Zugriff auf Zeichenketten (und Arrays im allgemeinen).
rainghost Geschrieben 8. Juli 2004 Autor Geschrieben 8. Juli 2004 ok. (int)$temp Was bedeutet das (int) vor der Variablen? Dann hätte ich alles was ich wissen muss ;-)
kLeiner_HobBes Geschrieben 8. Juli 2004 Geschrieben 8. Juli 2004 Das (int) bedeutet, daß ich explizit einen Int haben will. Eigentlich setzte ich $temp ja als string zusammen, aber ich will ja danach die Zahl haben.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden