Phương thức đối tượng toán học trong Javascript - phủ định về 0


87

trong Javascript, tôi dường như không thể tìm thấy một phương pháp nào để đặt phủ định thành 0?

-90 trở thành 0
-45 trở thành 0
0 trở thành 0
90 trở thành 90

Có điều gì như vậy không? Tôi vừa làm tròn số.

Câu trả lời:


180

Chỉ cần làm một cái gì đó như

value = value < 0 ? 0 : value;

hoặc là

if (value < 0) value = 0;

hoặc là

value = Math.max(0, value);

2
JSPerf nhanh cho thấy giá trị = giá trị <0? 0: giá trị; nằm trên jsperf.com/negative-to-zero
Skeep

21
Tôi giống như Math.maxmột nhất, bởi vì nó chỉ đòi hỏi tham khảo valuemột lần
Matt Fletcher

60

Tôi cho rằng bạn có thể sử dụng Math.max().

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

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

3
Đây là câu trả lời được chấp nhận theo ý kiến ​​của tôi. Chỉ cần nói ... :)
ksugiarto

2
Một điều cần lưu ý là cả hai Math.max(0, NaN)Math.max(0, undefined)trở lại NaN, do đó bạn có thể muốn làm một cái gì đó dọc theo những dòng:Math.max(0, num) || 0
jwerre

7

Nếu bạn muốn trở nên thông minh:

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

Tuy nhiên, Math.maxhoặc một toán tử có điều kiện sẽ dễ hiểu hơn nhiều.
Ngoài ra, điều này có vấn đề về độ chính xác đối với số lượng lớn.


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

// or 

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

zero không phải là tích cực hay tiêu cực, chức năng của bạn nên được đổi tên theo đó
Killy



-1

Tôi không tin rằng một hàm như vậy tồn tại với đối tượng Math gốc. Bạn nên viết script để điền vào hàm nếu cần sử dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.