Méthodes d'objets mathématiques Javascript - négatifs à zéro

87

en Javascript Je n'arrive pas à trouver une méthode pour mettre les négatifs à zéro?

-90 devient
0-45 devient 0
0 devient 0
90 devient 90

Y a-t-il quelque chose comme ça? Je viens d'arrondir les chiffres.

FFish
la source

Réponses:

180

Fais juste quelque chose comme

value = value < 0 ? 0 : value;

ou

if (value < 0) value = 0;

ou

value = Math.max(0, value);
aioobe
la source
2
Quick JSPerf affiche valeur = valeur <0? 0: valeur; est au top jsperf.com/negatives-to-zero
Skeep
21
Je aime l' Math.maxun des plus, car il ne nécessite que le référencement valueune fois
Matt Fletcher
60

Je suppose que vous pourriez utiliser Math.max().

var num = 90;
num = Math.max(0,num); // 90

var num = -90;
num = Math.max(0,num); // 0
RightSaidFred
la source
3
Celui-ci devrait être la réponse acceptée à mon avis. Juste en disant ... :)
ksugiarto
2
Une chose à garder à l'esprit est que les deux Math.max(0, NaN)et le Math.max(0, undefined)retour NaN, vous voudrez peut-être faire quelque chose du Math.max(0, num) || 0
genre
7

Si vous voulez être intelligent:

num = (num + Math.abs(num)) / 2;

Cependant, Math.maxou un opérateur conditionnel serait beaucoup plus compréhensible.
En outre, cela pose des problèmes de précision pour les grands nombres.

SLaks
la source
4
Math.positive = function(num) {
  return Math.max(0, num);
}

// or 

Math.positive = function(num) {
  return num < 0 ? 0 : num;
}
Juan Mendes
la source
zéro n'est ni positif ni négatif, votre fonction devrait être renommée en fonction de cela
Killy
3

x < 0 ? 0 : x Fait le travail .

Alexandre C.
la source
-1

Je ne crois pas qu'une telle fonction existe avec l'objet Math natif. Vous devez écrire un script pour remplir la fonction si vous devez l'utiliser.

Jacobangel
la source