将字符串解析为int64

问题描述 投票:0回答:2

我遇到一个问题,其中包含 64 位数字的字符串正在被

parseInt
解析,并且在此过程中丢失了一些位。我的应用程序使用 ES5,因此
BigInt
不可用。那么在 ES5 下如何将其解析为 64 位数字?

str = "72057594044342942"
console.log(parseInt(str));

javascript parseint int64
2个回答
1
投票

如果您想在旧版本的软件中引入新功能,我们会为此应用所谓的polyfill。

你也可以在网上找到BigInt这样的东西。

大整数(npmjs.com)

// Original example
var str = "72057594044342942";
var bigIntNum = bigInt(str);
console.log('original', bigIntNum.toString());

// Calculate
console.log('+3', bigIntNum.add(3).toString());
console.log('-3', bigIntNum.minus(3).toString());
<script src="https://cdnjs.cloudflare.com/ajax/libs/big-integer/1.6.52/BigInteger.min.js" integrity="sha512-9Ep9DTmyYR7ilaRntBdTgdiAWg/hDjwbkgxjt04LAZdHWdo5k0eQoxmvdjz99hPSvh7R2M2LWk3DvaWer6f9mA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>


0
投票

在 ECMA5 中,如果没有 BigInt,精确处理 64 位数字是很棘手的。由于

parseInt
在处理如此大的数字时会失去精度,请考虑使用像
bignumber.js
decimal.js
这样的库。即使在没有 BigInt 支持的环境中,这些库也可以安全地处理大整数。只需将
parseInt
替换为您选择的库中的适当方法即可。此解决方法可以保持 64 位数字的精度。

© www.soinside.com 2019 - 2024. All rights reserved.