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