web-dev-qa-db-fra.com

Méthodes Javascript pour les objets mathématiques - Négatifs à zéro

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.

55
FFish

Juste faire quelque chose comme

value = value < 0 ? 0 : value;

ou

if (value < 0) value = 0;

ou

value = Math.max(0, value);
124
aioobe

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
42
RightSaidFred

Si vous voulez être intelligent:

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

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

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

// or 

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

x < 0 ? 0 : x fait le travail.

3
Alexandre C.

Rappelez-vous le zéro négatif.

function isNegativeFails(n) {
    return n < 0;
}
function isNegative(n) {
    return ((n = +n) || 1 / n) < 0;
}
isNegativeFails(-0); // false
isNegative(-0); // true
Math.max(-0, 0); // 0
Math.min(-0, 0); // -0

Source: http://cwestblog.com/2014/02/25/javascript-testing-for-negative-zero/

0
Killy

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

0
jacobangel