【发布时间】:2018-12-12 22:30:23
【问题描述】:
我正在使用 ESNext 的 bigint 功能。做除法时,bigint 舍入为 0。举个例子:
有数字:
> 3000 / 1578
1.9011406844106464
使用大整数:
3000n / 1578n
1n
我想编写一个可以进行除法但使用银行家四舍五入(四舍五入)的函数,而不是四舍五入。
例子
function divide(a, b) {
return a/b;
}
我只是有点困惑如何编写我的divide 函数,并使用余数四舍五入。这是我尝试过的:
function divide(a, b) {
let result = a/b;
// if modulo is over half the divisor
if ((a % b) * 2n > b) {
// Add 1 if result is odd
if (result % 2n === 1n) result++;
} else {
// Remove 1 if result is even
if (result % 2n !== 1n) result--;
}
return result;
}
这为我提供了divide(3000n, 1578n) 的正确结果,但我注意到这将为我提供divide(7n, 2n) 的错误结果,我希望将其四舍五入为4n。
【问题讨论】:
标签: javascript rounding bigint