• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

IBAN Modulo wird nicht richtig berechnet.

T

ToM80

Guest
Hi,

ich war gerade dabei eine IBAN Validierungsfunktion (RegEx für grundsätzliche richtige Eingabe wäre schon da) zu bauen. Allerdings scheint JavaScript mit den hohen Zahlen ein Prodblem zu haben, da das Modulo am Ende falsch berechnet wird. Oder ich habe einen logischen Fehler gemacht, den ich aber nicht finden kann.
Hier mein Script:

PHP:
function verifyIBAN(orgIban) {
	console.log(orgIban);
	var alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	var countryCode=orgIban.slice(0,2);
	console.log(countryCode);
	var modulo=orgIban.slice(2,4);
	console.log(modulo);
	var bban=orgIban.slice(4,22);
	console.log(bban);
	var countryPos1=alphabet.indexOf(countryCode[0])+10;
	console.log(countryPos1);
	var countryPos2=alphabet.indexOf(countryCode[1])+10;
	console.log(countryPos2);
	var countryCode2=''+countryPos1+countryPos2+'00';
	console.log(countryCode2);
	var bbanCountry=bban+''+countryCode2;
	console.log(bbanCountry);
	var checksum=98-(bbanCountry%97); //bbanCountry%97 müsste 90 ergeben, es kommt aber 60 raus.
	console.log(checksum);
	if (checksum<10) {
		checksum=''+0+checksum;
	}
	if (modulo==checksum) {
		return true;
	} else {
		return false;
	}
}
var IBAN="DE08700901001234567890";
console.log(verifyIBAN(IBAN));

Habe ich einen Denkfehler oder ist JavaScript überfordert?
 
Das liegt am benutzten Zahlenformat. JavaScript hat IEEE 754 64bit floats und mit einer 52 bit Mantisse kommt man auf etwa 15 zuverlässige Ziffern ...
 
Zurück
Oben