Maison >interface Web >js tutoriel >Pourquoi l'opérateur Modulo (%) de JavaScript produit-il des résultats inattendus avec des nombres négatifs ?

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

DDD
DDDoriginal
2024-12-01 10:52:09631parcourir

Why Does JavaScript's Modulo Operator (%) Produce Unexpected Results with Negative Numbers?

L'opérateur % de JavaScript pour les nombres négatifs : une surprise négative

L'opérateur de module (%) est un outil précieux pour travailler avec les restes. Cependant, lorsqu'il s'agit de nombres négatifs en JavaScript, les résultats peuvent être inattendus.

Le problème :

Dans des cas comme (-13) % 64, JavaScript renvoie -13, alors que les calculatrices classiques comme Google Calculator donnent un résultat positif (51). Cet écart provient du comportement de l'opérateur avec les opérandes négatifs.

Le correctif :

Pour résoudre ce problème, une implémentation personnalisée de l'opérateur de module pour les nombres négatifs peut être utilisée. :

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

Cette modification garantit que le résultat de (-13) % 64 est 51, s'alignant avec l'attendu résultat mathématique. Pour plus d'informations, reportez-vous à l'article « Le bug JavaScript Modulo ».

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