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.

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);

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

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.


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

// or 

Math.positive = function(num) {
  return num < 0 ? 0 : num;
}

zéro n'est ni positif ni négatif, votre fonction devrait être renommée en fonction de cela
Killy



-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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.