我有一个base36号码00001CGUMZYCB99J
但是如果我尝试用JavaScript将其转换为基数为
parseInt("00001CGUMZYCB99J", 36);
我得到错误的结果,如177207000002463650或177207000002463648.预期的结果是177207000002463655.我发现两个网站无论如何都能得到正确的结果:translatorscafe和dcode。
但我怎么能在JS中做到这一点?
答案 0 :(得分:0)
转换的结果超过Number.MAX_SAFE_INTEGER
(即,基数为10的值太大而无法包含在JavaScript整数中),这意味着您需要某种任意精度库来进行转换,例如{ {3}}:
const BigInteger = require('biginteger').BigInteger;
let value = BigInteger.parse('00001CGUMZYCB99J', 36);
console.log( value.toString() ) // 177207000002463655
答案 1 :(得分:0)
JavaScript将所有值存储在double
中。因此,大数字会改变一些不太重要的数字。如果你想处理大数字,你必须使用像this BigInteger one这样的特殊库。
如果您使用此库,则可以在以下基础之间进行转换:
BigInteger.parse("00001CGUMZYCB99J", 36);
请记住,您需要继续使用该库,您无法将其转换回正常数字,否则您将面临同样的问题。