Métodos de objeto matemático Javascript - negativos a zero


87

em Javascript não consigo encontrar um método para definir negativos para zero?

-90 torna-se 0
-45 torna-se 0
0 torna-se 0
90 torna-se 90

Existe algo assim? Acabei de arredondar os números.

Respostas:


180

Apenas faça algo como

value = value < 0 ? 0 : value;

ou

if (value < 0) value = 0;

ou

value = Math.max(0, value);

2
JSPerf rápido mostra valor = valor <0? 0: valor; está no topo jsperf.com/negatives-to-zero
Skeep

21
Eu gosto Math.maxmais desse, porque só requer referência valueuma vez
Matt Fletcher

60

Suponho que você poderia usar Math.max().

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

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

3
Esta deve ser a resposta aceita em minha opinião. Só
estou

2
Uma coisa a ter em mente é que ambos Math.max(0, NaN)e Math.max(0, undefined)return, NaNentão você pode querer fazer algo como:Math.max(0, num) || 0
jwerre

7

Se você quer ser inteligente:

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

No entanto, Math.maxou um operador condicional seria muito mais compreensível.
Além disso, isso tem problemas de precisão para números grandes.


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

// or 

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

zero não é positivo nem negativo, sua função deve ser renomeada de acordo com isso
Killy



-1

Não acredito que tal função exista com o objeto Math nativo. Você deve escrever um script para preencher a função se precisar usá-la.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.