Reputation: 11302
in Javascript I can't seem to find a method to set negatives to zero?
-90 becomes 0
-45 becomes 0
0 becomes 0
90 becomes 90
Is there anything like that? I have just rounded numbers.
Upvotes: 120
Views: 80584
Reputation: 92274
function makeNegativeNumberZero(num) {
return !!Math.max(0, num);
}
// or
function makeNegativeNumberZero(num) {
return num < 0 ? 0 : num;
}
Upvotes: 4
Reputation: 11327
I suppose you could use Math.max()
.
var num = 90;
num = Math.max(0,num) || 0; // 90
var num = -90;
num = Math.max(0,num) || 0; // 0
Upvotes: 82
Reputation: 1
var num = 90;
num = Math.max(0,num); // 90
var num = -90;
num =Math.max(0,num); //0
This method can be used
Upvotes: -1
Reputation: 26161
Well value = Math.max(0,value)
is just neat but after 10 years, i just don't want one other nice method to go unmentioned.
value < 0 && (value = 0);
Upvotes: 0
Reputation: 330
Remember the negative zero.
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
Source: http://cwestblog.com/2014/02/25/javascript-testing-for-negative-zero/
Upvotes: 0
Reputation: 887365
If you want to be clever:
num = (num + Math.abs(num)) / 2;
However, Math.max
or a conditional operator would be much more understandable.
Also, this has precision issues for large numbers.
Upvotes: 8
Reputation: 420951
Just do something like
value = value < 0 ? 0 : value;
or
if (value < 0) value = 0;
or
value = Math.max(0, value);
Upvotes: 256