Javascript Matematik Nesne Yöntemleri - sıfıra negatifler


90

Javascript'te negatifleri sıfırlamak için bir yöntem bulamıyorum?

-90, 0 olur
-45, 0 olur 0,
0 olur
90, 90 olur

Böyle bir şey var mı? Sayıları yuvarladım.

Yanıtlar:


184

Sadece şöyle bir şey yap

value = value < 0 ? 0 : value;

veya

if (value < 0) value = 0;

veya

value = Math.max(0, value);

2
Hızlı JSPerf değeri = değer <0 mı gösteriyor? 0: değer; en üstte jsperf.com/negatives-to-zero
Skeep

23
En çok hoşuma giden Math.maxbirini, çünkü yalnızca bir valuekez kaynak göstermeyi gerektiriyor
Matt Fletcher

61

Sanırım kullanabilirsin Math.max().

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

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

3
Bence bu, kabul edilen cevap olmalıdır. Sadece söylüyorum ... :)
ksugiarto

2
Akılda tutulması gereken bir şey hem olmasıdır Math.max(0, NaN)ve Math.max(0, undefined)dönüş NaN, bu satırlar boyunca bir şey yapmak isteyebilirsiniz:Math.max(0, num) || 0
jwerre

8

Akıllı olmak istiyorsanız:

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

Bununla birlikte, Math.maxveya bir koşullu operatör çok daha anlaşılır olacaktır.
Ayrıca, bunun büyük sayılar için hassas sorunları vardır.


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

// or 

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

sıfır ne pozitif ne de negatif, fonksiyonunuz buna göre yeniden adlandırılmalıdır
Killy



-1

Yerel Math nesnesiyle böyle bir işlevin var olduğuna inanmıyorum. Kullanmanız gerekiyorsa, işlevi doldurmak için bir komut dosyası yazmalısınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.