I need to separate an integer into two numbers. Something like dividing by two but I only want integer components as a result, such as:
6 = 3 and 3
7 = 4 and
var n = 7;
var p1 = (n - (n % 2)) / 2;
var p2 = (n + (n % 2)) / 2;
console.log(p1, p2);
Another way to do this is using bitwise operators. It doesn't work for very big numbers
function splitter(number){
part1 = (number>>1) + (number&1);
part2 = number>>1;
console.log(number + ":", part1 + "+" + part2);
}
splitter(7);
splitter(6);
splitter(2**30+1); // Breaks for values greater than 2**31
splitter(2**31+1);
Or this way :)
var number = 7;
var part1 = ~~((number / 2) + (number % 2));
var part2 = ~~(number / 2);
console.log(part1, part2);
Just find the first part and subtract it from the original number.
var x = 7;
var p1 = Math.floor(x / 2);
var p2 = x - p1;
console.log(p1, p2);
In the case of x
being odd, p1
will receive the smaller of the two addends. You can switch this around by calling Math.ceil
instead.
var num = 7;
var part1 = parseInt(num/2);
var part2 = num - part1;
console.log(part1, part2);
Your code can be simplified a bit:
var num = 7;
var p1 = Math.floor(num / 2);
var p2 = p1;
if (num % 2 != 0) {
p1++;
}
console.log(p1, p2);