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.

FFish
fonte

Respostas:

180

Apenas faça algo como

value = value < 0 ? 0 : value;

ou

if (value < 0) value = 0;

ou

value = Math.max(0, value);
aioobe
fonte
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
RightSaidFred
fonte
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.

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

// or 

Math.positive = function(num) {
  return num < 0 ? 0 : num;
}
Juan Mendes
fonte
zero não é positivo nem negativo, sua função deve ser renomeada de acordo com isso
Killy
3

x < 0 ? 0 : x faz o trabalho.

Alexandre C.
fonte
0

Lembre-se do zero negativo.

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

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

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

Jacobangel
fonte