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
Libérer: 2024-11-20 00:52:02
original
1052 Les gens l'ont consulté

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;
};
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal