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-11-20 00:52:021060parcourir

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

Résultats négatifs inattendus dans l'opérateur modulo de JavaScript

Lors de l'utilisation de l'opérateur modulo (%) en JavaScript pour des nombres négatifs, cela peut produire des résultats surprenants . Par exemple, (-13) % 64 dans Google Calculator est égal à 51, tandis qu'en JavaScript, il renvoie -13.

Comprendre le problème

L'opérateur modulo de JavaScript calcule le reste après division, mais il n'applique pas la même logique aux nombres négatifs que les opérations mathématiques comme Google Calculator. En JavaScript, l'opérateur modulo renvoie une valeur avec le même signe que le premier opérande.

Résoudre le problème

Pour corriger ce comportement et assurer la cohérence avec les opérations mathématiques, vous pouvez utiliser l'implémentation personnalisée suivante du modulo opérateur :

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

Utilisation

Une fois la méthode modulo personnalisée définie, vous pouvez l'utiliser pour calculer le reste des nombres négatifs :

console.log((-13).mod(64)); // Outputs 51

Ce comportement corrigé s'aligne sur le résultat mathématique attendu et garantit un comportement cohérent sur différentes plateformes.

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