Modulo pour chiffres à virgule

cs_ebro Messages postés 3 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 22 juillet 2005 - 21 juil. 2005 à 16:14
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 - 22 juil. 2005 à 09:46
J'ai un souci en utilisant la fonction mod de VB avec des doubles (ex: 15.35 mod 2.5)
La fonction arrondit les deux valeurs avant de calculer le modulo ce qui me donne de faux résultats...

Qui peut m'aider ???
a+

8 réponses

gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
21 juil. 2005 à 16:53
Bonjour,

Le plus simple c'est de multiplier les valeurs par un nombre X multiple de 10, pour le plus avoir de virgule et de le divise par ce même multiplicateur pour le remettre a sa valeurs exacte.

Comme dans ton exemple il faut faire:

MsgBox (((15.35 * 100) Mod 250) / 100)

@++
[Gally Home Corp]
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
21 juil. 2005 à 17:25
Salut,

je pense que la solution de Gally est la meilleure. Tu récupères le nombre max de chiffres après la virgule (par ex 3). Ensuite tu multiplies tes 2 nombres par 10^3 et enfin tu fais ton opération de modulo.

@+
0
Egyde Messages postés 158 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 16 juillet 2007
21 juil. 2005 à 19:00
Par définition, l'arithmétique modulaire ne manipule que des nombres entiers ! 15.35 mod 2.5 n'a aucun sens mathématique.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
21 juil. 2005 à 19:21
Egyde a tout bon !!!!

Mod retourne le reste de la division ENTIERE d'un ENTIER par un autre
ENTIER !!!! Donc si tu lui refile des double, VB convertit en entier
avant de faire le calcul !!



Pourquoi tentes-tu de faire le modulo d'un double divisé par un double !! C'est un non-sens !!

Christophe R
0

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

Posez votre question
cs_ebro Messages postés 3 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 22 juillet 2005
22 juil. 2005 à 07:42
Ben je savais pas que le modulo d'un double divisé par un double était un non-sens...
En tous les cas , Matlab ou Excel le calcule sans problème !

Je travaille en radians et je voulais éviter de convertir mes données à chaque calcul de modulo.

Je vais créer la fonction suivante :

Public Function modulo(A As Double, B As Double)
modulo = A - (Int(A / B)) * B
End Function

Merci et A+
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
22 juil. 2005 à 08:24
Excel le calcule très bien (comme vb d'ailleur) car ils font une conversion en entier avant de calculer le modulo
0
cs_ebro Messages postés 3 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 22 juillet 2005
22 juil. 2005 à 09:25
Je ne sais pas si Excel fait une conversion en entier avant de calculer modulo mais les deux fonctions donnent des résulats différents. Et là c'est dangereux...

4.8 mod 2.1 = 1 avec VB
mod(4.8,2.1) = 0.6 avec Excel ou Matlab


Je dirais pour conclure qu'Excel le calcule mieux que VB !


A+
0
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
22 juil. 2005 à 09:46
Bonjour,

Utilise ma solution et l'explication de drahcir pour calcule le multiplicateur.

@++
[Gally Home Corp]
0
Rejoignez-nous