JS字符串转整数问题:预期结果与实际输出不符
问题原因
JavaScript里的Number是双精度64位浮点数,它能精确表达的整数范围是**-2^53 到 253**(也就是-9007199254740992至9007199254740992)。你要转换的数值`6145390195186705543`虽然没超过253,但它的二进制位数超出了浮点数尾数的53位存储上限,转成Number时会被自动舍入到最近的可精确表示的数值,所以末尾几位变成了000。
解决办法
要精确处理这种大整数,用JavaScript的BigInt类型就可以:
方式1:通过构造函数转换字符串
var str = '6145390195186705543'; var num = BigInt(str); console.log(num); // 输出 6145390195186705543n
方式2:直接使用BigInt字面量
如果数值是固定的,直接在数字末尾加n就能创建精确的BigInt:
var num = 6145390195186705543n; console.log(num); // 输出 6145390195186705543n
提醒:BigInt和普通Number不能直接做算术运算,需要先统一类型再操作。
内容的提问来源于stack exchange,提问作者CodeBaze
相关产品推荐
相关产品推荐

