To do Gaussian/Banker’s rounding in JavaScript, we can create our own function to do the rounding.
For instance, we write:
const isEven = (n) => {
return (0 === (n % 2));
};
const bankersRound = (x) => {
const r = Math.round(x);
return (((((x > 0) ? x : (-x)) % 1) === 0.5) ? ((isEven(r)) ? r : (r - 1)) : r);
};
console.log(bankersRound(1))
console.log(bankersRound(1.5))
console.log(bankersRound(2.5))
We first create the isEven function to return whether the number n is an even number.
Then we create the bankersRound function to round the number.
In the function, we first round the number x with Math.round .
Then we check if x is bigger than 0.
If it is, then we return x .
Otherwise, we return -x .
And we check if that number divided by 1 has 0.5 as the remainder.
If it does, we check if the number if even with isEven .
If it is, we return r .
Otherwise, we return r — 1 .
If x ends with .5, then we also return r .
Therefore, we see the first console log logs 1 and the other 2 logs 2.