Problème de modulo

Résolu
oz@work Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   -  
oz@work Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Pour une fois, je pose une question:
J'ai les données suivantes:
- base : est un entier supérieur à 5
- DIVIS : = FACT(base-4)/FACT(base-5)
Dans la colonne G, j'ai la formule suivante:
G1=1
G2=1+MOD(ENT(LIGNE(G1)/DIVIS);base-3)
G3=1+MOD(ENT(LIGNE(G2)/DIVIS);base-3)
et ainsi de suite.

Si ma base est inférieure à 52, je n'ai aucun soucis avec cette colonne G.
Mais si ma base est supérieure, le modulo se "trompe" une fois.

Si base=53, DIVIS=FACT(49)/FACT(48)=49
J'obtiens donc "1" dans [G1:G49]
Or, ma formule en G50 est:
G50=1+MOD(ENT(LIGNE(G49)/DIVIS);base-3)

Or ligne(G49)=49 >> 49/DIVIS=49/49=1 >> ent(1)=1 >> mod(1;50)=1 >> 1+1=2
Cependant, j'obtiens "1" en G50 mais bien "2" en G51

Plus étonnant, en G99, j'obtiens bien le changement voulu car j'ai bien "3".

Voici mon fichier: https://www.cjoint.com/c/DLwgvN9t8Cj

Merci d'avance pour votre aide ;)
A voir également:

3 réponses

JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonjour,

Ça ne doit pas fonctionner non plus pour 46, 56, 60, 61, 83, 90, 95, 99, 101...

Ta formule en $A$14 ne sert à rien puisque n!/(n-1)! = n
Remplace la par =base-4.

cordialement
1
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
Bonjour,

Il s'agit d'une erreur engendrée par la précision du calcul FACT(base-4)/FACT(base-5).
49/(FACT(49)/FACT(48)) renvoie 0,999999999999999
et ENT(49/(FACT(49)/FACT(48))) renvoie 0.

Pour le calcul de DIVIS, tu peux utiliser =ARRONDI(FACT(base-4)/FACT(base-5);0)

A+
1
oz@work Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   3
 
Merci à vous deux!

En effet, bizarrement, la précision laisse à désirer sur certains calculs.J'ai donc modifié ma formule en A14 par base-4 puis, dans le reste du tableau (que je ne vous avez pas fourni), mes autres DIVIS deviennent base*(base-1)*(base-2)*...(base-n) au lieu de fact(base)/fact(base/n).

Bonne journée à vous et bonnes fêtes de fin d'année ;)
0