J'ai une variable qui sera parfois négative et parfois positive.
Avant de l'utiliser, j'ai besoin de le rendre positif. Comment puis-je accomplir cela?
Utilisez la méthode Math.abs .
Vous trouverez ci-dessous un commentaire sur l'utilisation de la négation (merci à Kelly de m'avoir fait penser à cela). Il est légèrement plus rapide que le Math.abs
avec un grand nombre de conversions si vous faites une référence locale à la fonction Math.abs
(sans la référence locale Math.abs
, c'est beaucoup plus lent).
Regardez le réponse à cette question pour plus de détails. Sur de petits nombres, la différence est négligeable et je pense que Math.abs est un moyen beaucoup plus simple de «documenter» le code.
Entre ces deux choix (merci à @Kooilnc pour l'exemple):
Number.prototype.abs = function(){
return Math.abs(this);
};
et
var negative = -23,
positive = -negative>0 ? -negative : negative;
aller avec la seconde (négation). Il ne nécessite aucun appel de fonction et le processeur peut le faire en très peu d'instructions. Rapide, facile et efficace.
if (myvar < 0) {
myvar = -myvar;
}
ou
myvar = Math.abs(myvar);
ou, si vous voulez éviter l'appel de fonction (et la création de branches), vous pouvez utiliser ce code:
x = (x ^ (x >> 31)) - (x >> 31);
c'est un peu "hackish" et ça a l'air sympa d'une manière étrange :) mais je resterais quand même avec Math.abs
(je voulais juste montrer une autre façon de faire cela)
btw, cela ne fonctionne que si le moteur javascript sous-jacent stocke les entiers au format 32 bits, ce qui est le cas dans Firefox 3.5 sur ma machine (qui est 32 bits, de sorte qu'il risque de ne pas fonctionner sur une machine 64 bits, n'a pas été testé ...)
Ce n'est pas une implémentation de jQuery mais utilise la bibliothèque mathématique de Javascript
x = Math.abs (x);
Si vous ne souhaitez pas utiliser Math.Abs, vous pouvez vous contenter de cette simple déclaration if: P
if (x < 0) {
x = -x;
}
Bien sûr, vous pouvez en faire une fonction comme celle-ci
function makePositive(number) {
if (number < 0) {
number = -number;
}
}
makepositive (-3) => 3 makepositive (5) => 5
J'espère que cela t'aides! Math.abs fonctionnera probablement pour vous, mais si ce n'est pas si peu