我有一个base36数00001CGUMZYCB99J如何从Base36转换为Base10在JS
但如果我尝试它转换成JavaScript和
parseInt("00001CGUMZYCB99J", 36);
为10进制我得到错误的结果一样177207000002463650或177207000002463648。预期结果是177207000002463655.我发现两个网站,无论如何得到的结果:translatorscafe和dcode。
但我怎么能在JS中做到这一点?
我有一个base36数00001CGUMZYCB99J如何从Base36转换为Base10在JS
但如果我尝试它转换成JavaScript和
parseInt("00001CGUMZYCB99J", 36);
为10进制我得到错误的结果一样177207000002463650或177207000002463648。预期结果是177207000002463655.我发现两个网站,无论如何得到的结果:translatorscafe和dcode。
但我怎么能在JS中做到这一点?
该转换的结果超出Number.MAX_SAFE_INTEGER
(即以10为底值过大,以适应在JavaScript整数),这意味着你需要某种形式的任意精度库来进行转换,比如biginteger
:
const BigInteger = require('biginteger').BigInteger;
let value = BigInteger.parse('00001CGUMZYCB99J', 36);
console.log(value.toString()) // 177207000002463655
JavaScript将所有值存储在double
中。因此,大数字将有一些不太重要的数字发生变化。如果你想处理大量的数据,你必须使用一个特殊的库,如this BigInteger one。
如果你使用这个库,你可以基地之间这样的转换:
BigInteger.parse("00001CGUMZYCB99J", 36);
请记住,你需要使用该库以保持,则无法将其转换回一个正常的数字,或你将面临同样的问题。
这是一个准确性问题,但我不知道如何解决JavaScript中的问题。 – NieDzejkob