Calcul du reste d'une division. Résultat "discutable" de la fonction MOD

Hecatonchire 53,950 Points de réputation Modérateur bénévole
2023-06-21T11:06:29+00:00

Bonjour à tous,

C'est peut être moi qui me réveille avec 20 ans de retard à l'allumage ou Alzheimer ou je suis fatigué mais je trouve étonnant le résultat de la fonction MOD.

Le reste de la division de -0.5 par 2.

=MOD(-0.5 ; 2) = 1.5 je m'attendais à -0.5.

Cette variante classique Val - Div * ENT(Val / Div).

= -0.5 - 2 * ENT( -0.5 / 2 ) = 1.5 aussi !

Cela provient de l'arrondi générer par ENT :

ENT (-0.5 / 2) => ENT(-0.25) ) => -1 (et non 0)

J'ai contourné par Val - Div * TRONQUE(Val / Div ; 0)

Mais je ne trouve pas normal que MOD fonctionne ainsi, qu'en pensez-vous ?

Microsoft 365 et Office | Excel | Autres | Autres

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

2 réponses

  1. Hecatonchire 53,950 Points de réputation Modérateur bénévole
    2023-06-21T18:28:29+00:00

    Salut Daniel,

    Merci pour la réponse.

    Étonnamment je n'avais jamais été confronté à ce problème.

    La solution est effectivement dans le signe.

    Avec =MOD(-0.5 ; 2) = 1.5 le résultat est faux !

    Mais avec =MOD(-0.5 ; -2) = -0.5 le résultat est juste !

    Pour adapter MOD au signe j'ai tenté

    =MOD(C$2;$B15 * SIGNE(C$2) )

    Qui fonctionne bien sauf pour 0 (SIGNE renvoie 0) !

    Donc j'arrive à :

    =SI(C$2;MOD(C$2;$B15 * SIGNE(C$2));0)

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. DanielCo 107.7K Points de réputation
    2023-06-21T12:16:49+00:00

    Bonjour,

    MOD est connu pour être buggé. A ne pas utiliser. Attention au signe. D'après l'aide :

    =MOD(-3;2) Reste de la division de -3 par 2. Le signe est le même que celui du diviseur. 1

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire