我有一个字符串,我需要将这个字符串转换成另一个数字系统。
1959113774617397110401052 -十进制数系统的十进制记数法(10到36)。
如果我尝试使用以下代码:
var master = 1959113774617397110401052;
parseInt(master, 10).toString(36);
//8v0wc05bcz000000它不能正常工作。
你能帮助我知道,我的错误在哪里,以及如何正确使用它吗?
谢谢!
发布于 2017-05-20 01:26:52
对于超出带符号Int32的范围的整数计算,您需要使用像Decimal.js这样的多精确库。可由64位浮点数表示的连续整数范围。举个例子:
var astr = '1959113774617397110401052'
var a =new Decimal(astr)
var out = '';
while( a > 0 ) {
var d = a.mod(36).toNumber();
a = a.divToInt(36);
if(d>9) d=d+39; // d+7 for upper case
out = String.fromCharCode(48+d)+out
}
var my_div = document.getElementById("my_div")
my_div.innerHTML += astr+" in base 36 is "+out;<script src="https://raw.githubusercontent.com/MikeMcl/decimal.js/master/decimal.min.js"></script>
<div id="my_div"></div>
https://stackoverflow.com/questions/44071909
复制相似问题