Maison  >  Article  >  interface Web  >  Pourquoi l'opérateur de module JavaScript produit-il des résultats inattendus avec des nombres négatifs ?

Pourquoi l'opérateur de module JavaScript produit-il des résultats inattendus avec des nombres négatifs ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-26 02:22:12745parcourir

Why Does JavaScript's Modulus Operator Produce Unexpected Results with Negative Numbers?

Comportement de l'opérateur de module JavaScript pour les nombres négatifs

En JavaScript, l'opérateur de module (%) calcule le reste de l'opération de division. Cependant, il se comporte différemment pour les valeurs de dividendes négatives que les conventions mathématiques et autres langages de programmation.

Lors de l'exécution d'une opération de module sur un dividende négatif, JavaScript renvoie un reste négatif, tandis que les calculs mathématiques et la plupart des autres langages de programmation donnent un résultat positif. un. Cela peut être démontré avec l'exemple suivant :

  • Calculatrice Google : (-13) % 64 = 51 (résultat attendu)
  • JavaScript : console.log(-13 % 64) = -13 (résultat incorrect)

Résolution du Problème

Pour obtenir le résultat correct pour les opérations de module impliquant des nombres négatifs en JavaScript, nous pouvons utiliser la fonction personnalisée suivante :

Number.prototype.mod = function (n) {
  "use strict";
  return ((this % n) + n) % n;
};

Cette fonction, lorsqu'elle est appliquée aux dividendes négatifs, garantit que le reste renvoyé est positif. Par exemple :

console.log((-13).mod(64)); // Output: 51 (correct result)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn