Comment faire lorsque Mod semble avoir atteint ses limites ?

Malkavien Messages postés 11 Date d'inscription lundi 19 août 2002 Statut Membre Dernière intervention 29 octobre 2004 - 19 août 2002 à 16:51
rambc Messages postés 224 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 29 mars 2009 - 12 mai 2004 à 21:04
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 ?????
A voir également:

5 réponses

cs_Slan Messages postés 11 Date d'inscription mercredi 28 août 2002 Statut Membre Dernière intervention 6 janvier 2003
31 août 2002 à 19:36
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
0
Malkavien Messages postés 11 Date d'inscription lundi 19 août 2002 Statut Membre Dernière intervention 29 octobre 2004
31 août 2002 à 22:48
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.......
0
cs_Slan Messages postés 11 Date d'inscription mercredi 28 août 2002 Statut Membre Dernière intervention 6 janvier 2003
1 sept. 2002 à 21:42
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.
0
rambc Messages postés 224 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 29 mars 2009
12 mai 2004 à 21:01
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rambc Messages postés 224 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 29 mars 2009
12 mai 2004 à 21:04
De retour j'ai oublié un multiplier :

ramMod = NbreEntier - Int(NbreEntier / DiviseurEntier) * DiviseurEntier
0
Rejoignez-nous