Методы объектов Javascript Math - отрицательные к нулю - PullRequest
63 голосов
/ 07 февраля 2011

в Javascript Я не могу найти способ установить негативы на ноль?

-90 становится 0
-45 становится 0
0 становится 0
90 становится 90

Есть что-нибудь подобное? У меня только округленные числа.

Ответы [ 7 ]

140 голосов
/ 07 февраля 2011

Просто сделайте что-то вроде

value = value < 0 ? 0 : value;

или

if (value < 0) value = 0;

или

value = Math.max(0, value);
45 голосов
/ 07 февраля 2011

Полагаю, вы могли бы использовать Math.max().

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

var num = -90;
num = Math.max(0,num); // 0
7 голосов
/ 07 февраля 2011

Если вы хотите быть умным:

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

Однако, Math.max или условный оператор будет гораздо более понятным.
Кроме того, это имеет проблемы с точностью для больших чисел.

4 голосов
/ 07 февраля 2011
Math.positive = function(num) {
  return Math.max(0, num);
}

// or 

Math.positive = function(num) {
  return num < 0 ? 0 : num;
}
3 голосов
/ 07 февраля 2011

x < 0 ? 0 : x делает работу.

0 голосов
/ 12 января 2018

Запомните отрицательный ноль.

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

Источник: http://cwestblog.com/2014/02/25/javascript-testing-for-negative-zero/

0 голосов
/ 07 февраля 2011

Я не верю, что такая функция существует с собственным объектом Math. Вы должны написать скрипт для заполнения функции, если вам нужно ее использовать.

...