Modulo pour chiffres à virgule

Signaler
Messages postés
3
Date d'inscription
mardi 7 septembre 2004
Statut
Membre
Dernière intervention
22 juillet 2005
-
Messages postés
386
Date d'inscription
samedi 4 octobre 2008
Statut
Membre
Dernière intervention
19 février 2018
-
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

Messages postés
386
Date d'inscription
samedi 4 octobre 2008
Statut
Membre
Dernière intervention
19 février 2018
2
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]
Messages postés
745
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
15 septembre 2009
4
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.

@+
Messages postés
158
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
16 juillet 2007

Par définition, l'arithmétique modulaire ne manipule que des nombres entiers ! 15.35 mod 2.5 n'a aucun sens mathématique.
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
23
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
Messages postés
3
Date d'inscription
mardi 7 septembre 2004
Statut
Membre
Dernière intervention
22 juillet 2005

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+
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
23
Excel le calcule très bien (comme vb d'ailleur) car ils font une conversion en entier avant de calculer le modulo
Messages postés
3
Date d'inscription
mardi 7 septembre 2004
Statut
Membre
Dernière intervention
22 juillet 2005

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+
Messages postés
386
Date d'inscription
samedi 4 octobre 2008
Statut
Membre
Dernière intervention
19 février 2018
2
Bonjour,

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

@++
[Gally Home Corp]