如何在JavaScript中转换19位字符串数字且避免自动舍入?
为什么JavaScript转换大数字字符串会出现舍入?
JavaScript的Number类型基于64位双精度浮点数标准,它能精确表示的整数范围是-(2^53 - 1)到2^53 - 1(即-9007199254740991至9007199254740991)。你输入的数字6145390195186705543已经超出了这个范围,所以无法被Number精确存储,转换时会自动舍入到最近的可表示浮点数,也就是你看到的6145390195186705000。
解决办法
- 使用BigInt类型:这是JavaScript专门用于处理大整数的类型,能精确表示任意大小的整数。可以通过
BigInt()构造函数转换字符串,或者直接在数字字符串后加n:// 错误转换,丢失精度 const num = Number("6145390195186705543"); console.log(num); // 输出 6145390195186705000 // 精确处理方式 const preciseNum = BigInt("6145390195186705543"); console.log(preciseNum); // 输出 6145390195186705543n - 保留字符串格式:如果不需要进行数值运算,只是展示或字符串层面的操作,直接使用原字符串即可,避免转换为
Number。
内容的提问来源于stack exchange,提问作者mahdiyar jafari
相关产品推荐
相关产品推荐

