如何在 JavaScript 中对 BigInt Math.floor?
How to Math.floor on BigInt in JavaScript?
出现这个错误TypeError: Cannot convert a BigInt value to a number
:
function getCompositeNumbers() {
let v = []
let i = 1n
while (i < 1000000n) {
if (checkIfDivisible(i)) {
v.push(i)
}
i++
}
return v
}
function checkIfDivisible(i) {
if (i/2n == Math.floor(i/2n)) return true
if (i/3n == Math.floor(i/3n)) return true
if (i/5n == Math.floor(i/5n)) return true
if (i/7n == Math.floor(i/7n)) return true
if (i/11n == Math.floor(i/11n)) return true
if (i/13n == Math.floor(i/13n)) return true
return false
}
BigInts 是整数,它们不能表示小数值 - 将它们四舍五入是没有意义的。 /
是整数除法,隐式截断小数位。
要检查 BigInts 的整除性,请使用
number / divisor * divisor == number
number % divisor == 0n
出现这个错误TypeError: Cannot convert a BigInt value to a number
:
function getCompositeNumbers() {
let v = []
let i = 1n
while (i < 1000000n) {
if (checkIfDivisible(i)) {
v.push(i)
}
i++
}
return v
}
function checkIfDivisible(i) {
if (i/2n == Math.floor(i/2n)) return true
if (i/3n == Math.floor(i/3n)) return true
if (i/5n == Math.floor(i/5n)) return true
if (i/7n == Math.floor(i/7n)) return true
if (i/11n == Math.floor(i/11n)) return true
if (i/13n == Math.floor(i/13n)) return true
return false
}
BigInts 是整数,它们不能表示小数值 - 将它们四舍五入是没有意义的。 /
是整数除法,隐式截断小数位。
要检查 BigInts 的整除性,请使用
number / divisor * divisor == number
number % divisor == 0n