如何在JavaScript中将大整数623527832412487691无损转为BigInt
如何无损将超大整数转换为BigInt类型
JavaScript的Number类型基于IEEE 754双精度浮点数标准,仅能精确表示**-2^53 到 2^53**之间的整数。你提到的623527832412487691已经超出这个范围,直接用数字字面量声明时会被自动舍入,导致精度丢失(比如你示例中打印出623527832412487700)。
要实现无损转换为BigInt,关键是避免让该整数先被解析为Number类型,具体方法如下:
- 使用字符串作为参数调用
BigInt()构造函数:
字符串可以完整保留所有数字字符,BigInt构造函数能直接解析得到精确的BigInt值。const preciseBigInt = BigInt("623527832412487691"); console.log(preciseBigInt); // 输出 623527832412487691n
注意:不要直接写623527832412487691n这种字面量——JavaScript会先把623527832412487691解析为Number类型(此时已经丢失精度),再转换为BigInt,结果依然是错误的:
const wrongBigInt = 623527832412487691n; console.log(wrongBigInt); // 输出 623527832412487700n
如果该整数是从外部(比如接口返回、用户输入)获取的字符串,直接传入BigInt()即可完成无损转换。
内容的提问来源于stack exchange,提问作者Alfie
相关产品推荐
相关产品推荐

