Javascript 为什么当我转换一个22+;十进制数到十六进制的结果是10?

Javascript 为什么当我转换一个22+;十进制数到十六进制的结果是10?,javascript,Javascript,所以我写了一个从十进制转换为十六进制的代码,当我输入一个22位或更多的数字时,结果总是20位。有人能解释为什么会发生这种情况吗?这是代码,我去在线网站转换这样一个数字,它在那里工作,但为什么不与我一起 函数转换(x){ x=parseFloat(x); var mod=0; var sum=“”; var FinalSum=“”; 变量y; var-str; var-slpha; varβ; 而(x!==0){ mod=x%16; 如果(mod==10){ 总和+=“a”; }否则如果(mod

所以我写了一个从十进制转换为十六进制的代码,当我输入一个22位或更多的数字时,结果总是20位。有人能解释为什么会发生这种情况吗?这是代码,我去在线网站转换这样一个数字,它在那里工作,但为什么不与我一起

函数转换(x){
x=parseFloat(x);
var mod=0;
var sum=“”;
var FinalSum=“”;
变量y;
var-str;
var-slpha;
varβ;
而(x!==0){
mod=x%16;
如果(mod==10){
总和+=“a”;
}否则如果(mod==11){
总和+=“b”;
}否则如果(mod==12){
总和+=“c”;
}否则如果(mod==13){
总和+=“d”
}否则如果(mod==14){
总和+=“e”;
}否则如果(mod==15){
总和+=“f”;
}否则{
sum+=mod;
}
x=parseInt(x/16);
}//当循环结束时。
/*一切正常
直到现在,但你必须
处理相反的问题*/
str=总和;
alpha=总和长度-1;
β=α+1;
而(alpha!=-1){
FinalSum+=str.slice(α,β);
β--;
α--;
}//当循环结束时。
控制台日志(FinalSum);
}

转换(12123123456)可能会遇到JS中可能最大的数字。我做了一个片段,请更改它以反映您的issue@ScottMarcusJavaScript中最大的数字表示为
无限
,在这里会导致无限循环(由于
无穷大
NaN
上的数学运算都会导致
NaN
,因此循环不会终止)。@OP此功能内置于JavaScript中;您只需执行
(1212313123123456)。toString(16)
。您可以调用
toString(16)
在任何数值上都是这样。@mplungjan好的,它适用于22位,但我尝试了24位以上,结果是70位