Comment faire lorsque Mod semble avoir atteint ses limites ?

Messages postés
11
Date d'inscription
lundi 19 août 2002
Statut
Membre
Dernière intervention
29 octobre 2004
-
Messages postés
224
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
29 mars 2009
-
Voila, j'utilise la fonction Mod, avec un nombre tres grang (double) mais il ne semble pas le supporter (overflow), comment faire ? y a t il un API ki le remplace ?????

5 réponses

Messages postés
11
Date d'inscription
mercredi 28 août 2002
Statut
Membre
Dernière intervention
6 janvier 2003

salut Malkavien,

la fonction Mod renvoie le reste d'une division euclidienne
de deux entiers.

donc, on a : N = k.a + b dans cette expression on veut : b
on connait déjà N et a, donc il faut connaitre k.
pour connaitre k on fait un division entière avec le signe \
(à ne pas confondre ac le signe /)
qb tu fais N\a le résultat est k donc on a la relation suivante :
N Mod a N - (a * (N \ a)) b
Messages postés
11
Date d'inscription
lundi 19 août 2002
Statut
Membre
Dernière intervention
29 octobre 2004

oui, sa j'avais deja remplacé, mais le pb se situe à xor, oui car xor a le meme probleme, pas de double avec xor... et la pour le remplacer c plus costaud.......
Messages postés
11
Date d'inscription
mercredi 28 août 2002
Statut
Membre
Dernière intervention
6 janvier 2003

salut Malkavien,

Pour remplacer xor, il faut convertir d'abord tes nombres en binaire.
Voici la table de vérité (si!si! ça s'appelle comme ça!) de XOR :

Xor| 1 | 0
------------
1 | 0 | 1
------------
0 | 1 | 0

Autrement dit, XOR revoie 1 si et seulement si les deux valeurs
comparées sont différentes. donc je pense que tu peux te débrouiller
en convertissant tes nb en binaires et en utilisant un "If...Then..."
sur chaque bit de tes nb.

voilà ! c'est le seul moyen que je vois.
Si tu en as un autre, mail-moi ou fait suivre ton message à celui-ci.
Messages postés
224
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
29 mars 2009

J'ai eu ce problème en VBA sur Word. LE plus simple c'est d'utiliser la fonction suivante (Faite en VBA-Word) :

'==========================================
Function ramMod(NbreEntier As Variant, DiviseurEntier As Variant) As Variant

' Cette fonction calcule des modulos sur des entiers de type Decimal
' (ce que ne fait pas la fonction Mod de VBA).

ramMod = NbreEntier - Int(NbreEntier / DiviseurEntier) DiviseurEntier

End Function
'==========================================

PS: Pour les trés grands, nombres il te faudra une division "à la main" au lieu de "/".

PS2: "Int" donne la partie entière.

En espérant être clair.
Messages postés
224
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
29 mars 2009

De retour j'ai oublié un multiplier :

ramMod = NbreEntier - Int(NbreEntier / DiviseurEntier) * DiviseurEntier