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

Contribuez Discussion :

[Math] Modulo de la division par 97


Sujet :

Contribuez

  1. #1
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut [Math] Modulo de la division par 97
    Bonjour,

    parfois la fonction Mod qui travaille sur le type Long est en dépassement de capacité pour vérifier des clés, voici une fonction qui remédie à cette limite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function ResteModulo97(ByVal str As String) As Integer
     
    Dim i As Integer
    Dim Reste As Integer
     
    Reste = 0
    For i = 0 To Len(str) - 1
        Reste = (Reste * 10 + CInt(Mid(str, i + 1, 1))) Mod 97
    Next i
     
    ResteModulo97 = Reste
     
    End Function
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour Caféine,

    une alternative pour résoudre le problème, est de passer par un type décimal et ça semble fonctionner pour cet usage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim vNum As Variant, vTmp As Variant
    vNum = CDec("783528889315111483")
    vTmp = vNum / 97
    Debug.Print CByte((vTmp - Int(vTmp)) * 97)
    Dépassement de capacité de CDec() pour les nombres supérieurs à "79228162514264337593543950335" ou 29 chiffres.

    sauf erreur,

    cordialement,

    Philippe

Discussions similaires

  1. [MX] Modulo et division par 0
    Par Champitox dans le forum ActionScript 3
    Réponses: 6
    Dernier message: 08/04/2011, 20h05
  2. Modulo et division par zéro
    Par Carabi dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 09/02/2009, 11h40
  3. [Math][Info]division par zéro
    Par niko8181 dans le forum Général Java
    Réponses: 9
    Dernier message: 23/05/2005, 09h58
  4. [LG]a divise par b
    Par backsync dans le forum Langage
    Réponses: 8
    Dernier message: 22/10/2003, 21h37
  5. probleme avec une division par zéro
    Par jcharleszoxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2003, 18h14

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