Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PHP modulo - zu große Zahl?

Empfohlene Antworten

Veröffentlicht

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

Ä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?

gibt es keine möglichkeit, die zahl vielleicht umzurechnen in eine andere einheit etc?

Wenn ich die Zahl ausgebe wird sie so angezeigt:

2.0080000097038E+023

Frage ist jetzt:

Wie kriege ich das Modullo dieser Zahl raus?

200800000970375700131400

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.

was ist das für eine Zahl?

Was beschreibt sie?

Welche Einheit?

das ist eine IBAN Kontonummer.

Ich bin gerade dabei einen IBAN-Rechner zu programmieren. Um die Prüfziffer herauszufinden, brauche ich das modulo.

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

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?

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).

ok.

(int)$temp

Was bedeutet das (int) vor der Variablen?

Dann hätte ich alles was ich wissen muss ;-)

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.