IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

un entier très long


Sujet :

JavaScript

  1. #1
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut un entier très long
    Bonjour,

    J'ai un petit problème avec les fonctions mathématiques de javascript.

    Je vous explique : je dois vérifier qu'un RIB est valide.
    Pour cela je doit concatener code etablissement (5 chiffres), code guichet (5 chiffres), n° de compte (11 chiffres car la lettre est transformée en un entier correspondant) et clé RIB (2 chiffres).
    J'obtiens donc un entier de longueur 23.
    Je dois ensuite diviser cet entier par 97. Si le reste est null alors le RIB est bon.

    J'ai donc fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    testvaliderib = parseInt(String(document.getElementById("ets").value)+String(document.getElementById("guichet").value)+String(numcompte)+String(document.getElementById('clerib').value));
    alert(testvaliderib);
     
    if (testvaliderib % 97 != 0) {
    	alert(testvaliderib % 97);
    	erreur = erreur + "--> un RIB valide (code établissement, guichet, n° de compte et clé RIB)\n";
    }
    Le problème se situe au niveau de la variable testvaliderib, car Javascript me transforme mon entier en float avec puissance, mais il me zappe la motié de mes chiffres et du coup mon reste est egal à 60 au lieu de 0 !
    (Si je fais la même opération avec la calculatrice windows ca fonctionne très bien)

    J'ai essayé d'utiliser la fonction Math.round() mais ca ne change rien. J'ai testé parseFloat au lieu de parseInt, ce ne fonctionne pas plus.
    Là je vois pas trop quoi faire...

    Quelqu'un pourrait m'aider ?

    Merci

  2. #2
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    Oui, un entier de 23 chiffres n'est plus vraiment un entier !!

    J'utilise cette fonction (maison) depuis plusieurs années maintenant : si ça interresse ...

    C'est décortiqué à l'extrème, donc ça peut-être simplifié. ça retourne soit la clef si elle n'est pas renseignée (3 arguments), soit un booleen

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    // -----------------------------------------------------------------------------------------------------------------------
    function isRIBvalid()
        {
     
        if (isRIBvalid.arguments.length>=3)
            {
            var bqe=isRIBvalid.arguments[0];
            var gui=isRIBvalid.arguments[1];
            var cpt=isRIBvalid.arguments[2].toUpperCase();
     
            var tab= "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            var tab1="123456789123456789234567890123456789".split("");
            while (cpt.match(/\D/) != null)
                cpt=cpt.replace(/\D/, tab1[tab.indexOf(cpt.match(/\D/))]);
            var cp=parseInt    (cpt, 10);
     
            a=bqe%97;
            a=a*100000+parseInt(gui, 10);
            a=a%97;
            a=a*Math.pow(10, 11) + cp;
            a=a%97
            a=a*100;
            a=a%97
            a=97-a;
            if (isRIBvalid.arguments.length>3)
                return isRIBvalid.arguments[3]==a;
            else
                return a;
            }
        else
            {
            return false;
            }
        }


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  3. #3
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    Merci beaucoup pour ta fonction, ca marche super !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Demarage des programmes très long
    Par venegan dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 02/03/2006, 16h50
  2. Démarrage de windows vraiment très long
    Par krfa1 dans le forum Windows XP
    Réponses: 16
    Dernier message: 23/10/2005, 12h37
  3. delete très long
    Par slefevre01 dans le forum Oracle
    Réponses: 7
    Dernier message: 06/10/2005, 13h16
  4. Très long texte dans Quick Report - Comment faire ?
    Par delphi+ dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/08/2005, 22h18
  5. tyoe d'entier plus long que 32 bits
    Par LIMODIN dans le forum MFC
    Réponses: 4
    Dernier message: 13/01/2004, 20h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo