340 votes

JavaScript modulo comporte ne pas

Selon Google Calculatorest .

Fonction Javascript (voir cette JSBin : http://jsbin.com/uzake5/2/edit) il est `` .

Comment puis-je corriger cela ?

345voto

Enrique Points 4468
<pre><code></code><p><a href="http://javascript.about.com/od/problemsolving/a/modulobug.htm">Le code JavaScript Modulo Bug</a></p></pre>

225voto

StuR Points 3542

À l’aide de Number.prototype est lente, parce que chaque fois que vous utilisez la méthode de prototype que votre numéro est encapsulée dans un objet. Au lieu de cela :

Utilisation :

http://jsperf.com/Negative-modulo/2

~ 97 % plus rapide qu’avec un prototype. Si les performances sont bien sûr importants pour vous...

38voto

Rob Sobers Points 5528

Le `` opérateur en JavaScript n’est pas l’opérateur reste, le modulo opérateur (la principale différence étant dans les nombres négatifs comment sont traités) :

``

20voto

Shanimal Points 4067

Drôle que la langue refs eux-mêmes l'appellent le "module opérateur d'affectation'.

MSDN: http://msdn.microsoft.com/en-us/library/ie/9f59bza0(v=vs. 94).aspx

Mozilla: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Arithmetic_Operators#.25_.28Modulus.29

De toute façon, voici un tutoriel avec un "mod" de la fonction pour retourner un résultat positif.

var mod = function (n, m) {
    var remain = n % m;
    return Math.floor(remain >= 0 ? remain : remain + m);
};
mod(5,22)   // 5
mod(25,22)  // 3
mod(-1,22)  // 21
mod(-2,22)  // 20
mod(0,22)   // 0
mod(-1,22)  // 21
mod(-21,22) // 1

Et bien sûr

mod(-13,64) // 51

5voto

dheerosaur Points 4143

Bien qu’il n’est pas se comporter comme prévu, il ne veut pas dire que JavaScript n’est pas « comporte ». C’est un choix JavaScript de prévoir son modulo calcul. Car, par définition, chaque réponse est logique.

Voir cette de Wikipedia. Vous pouvez voir sur les droite comment différentes langues choisi signe du résultat.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X