如何在Javascript中将BigInt除以小数



我有下面的代码:

let n = 100n;
let x = 0.1;
console.log(n/x); // Throws error

错误:

TypeError: Cannot mix BigInt and other types, use explicit conversions

如何在JavaScipt中将BigInt除以十进制值?

一般来说

混合numberBigInt会带来麻烦,这就是为什么没有数学运算符允许您这样做,并且需要显式转换。

(注:Decimal即将问世,成熟后将适用于此。(

如果您想要number结果

在进行计算之前将CCD_ 6转换为CCD_;注意,对于非常大的数字(这是BigInt的要点(,特别是Number.MAX_SAFE_INTEGER以上或Number.MIN_SAFE_INTEGER以下的数字,转换可能是有损耗的

let n = 100n;
let x = 0.1;
let result = Number(n) / x;
console.log(result);

如果您想要BigInt结果

它更复杂,因为你必须决定如何处理分数结果。(你的例子不会有分数结果,但一般情况会。(你可以通过number,但这也是一个潜在的有损操作:

let n = 100n;
let x = 0.1;
let result = BigInt(Number(n) / x); // Throws if the result is fractional
// let result = BigInt(Math.round(Number(n) / x)); // Rounds instead of throwing
console.log(result.toString());

如果你能重构运算,这样你就可以用整数来表达它,这会让它变得容易得多,因为这样你就能把x变成BigInt。例如,在特定的情况下,/ 0.1* (1 / 0.1)相同,即* 10:

let n = 100n;
let x = 10n;
let result = n * x;
console.log(result.toString());

但这只是一个具体的案例。

你可能会发现你需要根据具体情况来处理它,尽量避免做手术。如果不能,并且除数是分数,那么通过number的往返可能是不可避免的。

只需将bigint转换为数字。它会起作用的。

let n = 100n;
let x = 0.1;
console.log(Number(n)/x); 

它将返回结果1000