Diskuse:International Bank Account Number

Obsah stránky není podporován v jiných jazycích.
Přidat téma
Z Wikipedie, otevřené encyklopedie

nevim jestli priklad a nebo popis algoritmu je spatne, ale nevychazi mi kontrola na cislo u malty (MT84 MALT 0110 0001 2345 MTLC AST0 01S) a svedska (SE12 1231 2345 6789 0123 4561), jine cisla z tech zemi co sem si nasel na internetu kontrolou prosli --vit hnilica

Máte pravdu, že švédský příklad byl špatně, opravil jsem ho (pro dané IBAN jsou kontrolní číslice 94), Malta je ale dobře, máte zřejmě chybu ve výpočtu:
MT84 MALT 0110 0001 2345 MTLC AST0 01SMALT011000012345MTLCAST001SMT84 → 221021290110000123452229211210282900128222984
221021290110000123452229211210282900128222984 mod 97 = 1 (protože 221021290110000123452229211210282900128222984 = 2278570001134021891260094960930751547713639 · 97 + 1)
--Mormegil 26. 8. 2008, 11:22 (UTC)
chybka byla v zaokrouhlovani, tim prevadenim pismen na cisla to trosku preteklo:)

chybne odkazy[editovat zdroj]

vsechny odkazy na externi dokumenty jsou nefunkcni ---Gorn

Kus kódu v Javě[editovat zdroj]

Do článku přidal User:Joshis následující „Převod českého formátu čísla účtu na formát IBAN“:

Pro převod českého formátu čísla účtu (tj. čísla účtu ve tvaru předčíslí - číslo_účtu / kód_banky) do formátu IBAN je možno použít následující postup:

public class IBANUtilities {

    /**
     * Computes the IBAN number from a given Czech account information.
     * @param prefix An account prefix
     * @param number An account number
     * @param bank A bank code
     * @return An IBAN number.
     */
    public static String computeIBANFromCzechBankAccount(String prefix, String number, String bank) {
        // preprocess the numbers
        prefix = String.format("%06d", Long.valueOf(prefix));
        number = String.format("%010d", Long.valueOf(number));
        bank = String.format("%04d", Long.valueOf(bank));
        
        // calculate the check sum
        String buf = bank + prefix + number + "123500";
        int index = 0;
        String dividend;
        int pz = -1;
        while (index <= buf.length()) {
            if (pz < 0) {
                dividend = buf.substring(index, Math.min(index + 9, buf.length()));
                index += 9;
            } else if (pz >= 0 && pz <= 9) {
                dividend = pz + buf.substring(index, Math.min(index + 8, buf.length()));
                index += 8;
            } else {
                dividend = pz + buf.substring(index, Math.min(index + 7, buf.length()));
                index += 7;
            }
            pz = Integer.valueOf(dividend) % 97;
        }
        pz = 98 - pz;
        
        // assign the checksum
        String checksum = String.format("%02d", pz);
        
        // build the IBAN number
        return "CZ" + checksum + bank + prefix + number;
    }
}

Domnívám se, že to je nevhodné, a z článku jsem to (prozatím?) odstranil. Jednak kód komentovaný v angličtině (a s ukázkovým příkladem komentování toho, co komentovat netřeba, („assign the checksum“!) a nekomentováním toho, co by za to stálo, o magické konstantě "123500" nemluvě) do české encyklopedie moc nepatří, navíc je zcela bez kontextu či vysvětlení a ne zrovna dvakrát čitelný či logicky strukturovaný. Ale hlavně je otázkou, jak moc vůbec patří zdroják do encyklopedie, tím spíše zdroják s velmi specifickým účelem (proč zrovna pro účty u českých bank?). V encyklopedickém článku mají být popsány obecné principy či řekněme základní postup (které tam, jak věřím, jsou; a můžete je aplikovat stejně dobře na účty třeba slovenské), ne implementace v jednom konkrétním programovacím jazyce. --Mormegil 21. 9. 2012, 19:45 (UTC)

Zrovna jsem to hledal a nasel jsem to tu v diskuzi spis nahodou, diky cache Google. Kod je spravne, a ted jsem to kontroloval jinde - je to prepis algoritmu CNB, ktery je skryty na strance CNB v Javascriptu (vcetne "magicke konstanty"). Nemaz prosim veci jen proto, ze jim do detailu nerozumis... ;-) Kde jinde se clovek ma dozvedet, jaky je vztah ceskeho cisla uctu a IBAN, nez na CZ Wikipedii po vyhledani slova "IBAN" na Google?? Kdyz si najdu IBAN, kde se mam dozvedet, jak se vypocte kontrolni dvojcisli z cisla uctu? Zakladem cehokoliv je davat smysl. Toto mi smysl dava. Diky...-- Tento nepodepsaný komentář přidal(a) uživatel(ka) 88.100.215.7 (diskusebloky) 00.23, 10. října 2012‎ (CE(S)T)
Nepsal, že tomu nerozumí. Psal, že je to z encyklopedického hlediska špatné zpracování tématu, což je pravda. Jak se vypočte to či ono by tu mělo být popsáno především slovy a vzorci, které vystihnou smysl, příklad výpočtu v pseudokódu nebo v programovacím jazyce je spíš dodatek, u kterého je otázka, za by nepatřil spíš na wikiknihy.--Tchoř (diskuse) 10. 10. 2012, 06:22 (UTC)
Já tomu rozumím výborně (stejně jako tomu, že ten kód je dost mizerný), to s tím ale nemá nic dělat. Vztah českého čísla účtu a IBAN najdeš v řádku Česko v tabulce International Bank Account Number#Struktura IBAN pro jednotlivé státy. Jak se vypočte kontrolní dvojčíslí se dočteš na International Bank Account Number#Výpočet kontrolních číslic. Ale taky tam najdeš vztah slovenského čísla účtu a IBAN, německého čísla účtu a IBAN atd. Pokud se ale ptáš „kde jinde mám najít kusy kódu, které mohu bezmyšlenkovitě zkopírovat do svého programu“, tak bych rozhodně místo všeobecné encyklopedie doporučil jiné zdroje, třeba Stack Overflow. Někam na Wikiknihy by to možná mohlo patřit taky, ale mně se teda ani to moc nezdá. --Mormegil 10. 10. 2012, 09:31 (UTC)