Le Modulo en VB6 [Résolu]

Signaler
Messages postés
5
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
13 septembre 2006
-
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
-
    Bonjour tout le monde.
j veux calculer R1= t1 Mod 97 avec t1=2558100035900 ( le type de t1 est double)
mais un msg d'erreur s'affiche : dépassement de capacité.
R1 soit de type long ou double mais toujours le même problème.
Cordialement.
Ahmed.

2 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
le modulo, c'est "le reste de la division entière."

tu peux donc le remplacer par :

R1 = t1 - fix(t1 / 97) * 97

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
21
Salut,

Le problème a déjà été rencontré sur VBFRance. Voici la réponse qui a été apportée ce jour-là par us_30 :





L'utilisation de la fonction MOD ne fonctionne que dans la plage des
nombres en LONG. C'est à dire que tu peux l'utiliser avec des DOUBLE à
la condition de ne pas dépasser la limite 2147483647 (limite du type
LONG) alors que le type DOUBLE va au-delà.

Par conséquent, il
faut réécrire la fonction MOD, avec des instructions compatibles avec
le type DOUBLE, pour toute sa plage. Cette fonction peut être
programmée comme suit :

=

Function MOD2(ByVal D As Double, ByVal N As Double) As Double
'Renvoi le modulo de D et N pour des nombres jusqu'à Double
'contrairement à MOD d'Excel ou de VBA

'Converti en entierD Int(D): N Int(N)
'Calcul du reste
MOD2 = D - N * Int(D / N)

End Function



=

Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.