Veröffentlicht 8. Juli 200421 j 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
8. Juli 200421 j Ä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?
8. Juli 200421 j gibt es keine möglichkeit, die zahl vielleicht umzurechnen in eine andere einheit etc?
8. Juli 200421 j Frage ist jetzt: Wie kriege ich das Modullo dieser Zahl raus? 200800000970375700131400
8. Juli 200421 j 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.
8. Juli 200421 j das ist eine IBAN Kontonummer. Ich bin gerade dabei einen IBAN-Rechner zu programmieren. Um die Prüfziffer herauszufinden, brauche ich das modulo.
8. Juli 200421 j 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
8. Juli 200421 j 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?
8. Juli 200421 j 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).
8. Juli 200421 j ok. (int)$temp Was bedeutet das (int) vor der Variablen? Dann hätte ich alles was ich wissen muss ;-)
8. Juli 200421 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.