我遇到一个问题,其中包含 64 位数字的字符串正在被
parseInt
解析,并且在此过程中丢失了一些位。我的应用程序使用 ES5,因此 BigInt
不可用。那么在 ES5 下如何将其解析为 64 位数字?
str = "72057594044342942"
console.log(parseInt(str));
如果您想在旧版本的软件中引入新功能,我们会为此应用所谓的polyfill。
你也可以在网上找到BigInt这样的东西。
// 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>
在 ECMA5 中,如果没有 BigInt,精确处理 64 位数字是很棘手的。由于
parseInt
在处理如此大的数字时会失去精度,请考虑使用像 bignumber.js
或 decimal.js
这样的库。即使在没有 BigInt 支持的环境中,这些库也可以安全地处理大整数。只需将 parseInt
替换为您选择的库中的适当方法即可。此解决方法可以保持 64 位数字的精度。