100

在 Javascript 中,我似乎找不到将负数设置为零的方法?

-90 变为 0
-45 变为 0
0 变为 0
90 变为 90

有这样的吗?我刚刚对数字进行了四舍五入。

4

7 回答 7

215

只是做类似的事情

value = value < 0 ? 0 : value;

或者

if (value < 0) value = 0;

或者

value = Math.max(0, value);
于 2011-02-07T18:16:17.937 回答
70

我想你可以使用Math.max().

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

var num = -90;
num = ~~Math.max(0,num); // 0
于 2011-02-07T18:16:48.330 回答
8

如果你想变得聪明:

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

但是,Math.max或者条件运算符会更容易理解。
此外,这对于大量数字有精度问题。

于 2011-02-07T18:18:05.557 回答
4
Math.positive = function(num) {
  return Math.max(0, num);
}

// or 

Math.positive = function(num) {
  return num < 0 ? 0 : num;
}
于 2011-02-07T18:19:00.937 回答
3

x < 0 ? 0 : x做这项工作。

于 2011-02-07T18:16:51.530 回答
0

记住负零。

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/

于 2018-01-12T08:48:00.197 回答
0

很好value = Math.max(0,value),但 10 年后,我只是不想让另一种好方法不被提及。

value < 0 && (value = 0);
于 2021-06-27T15:42:34.020 回答