js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换成浮点数。只有对String类型调用这些方法,这两个函数才能正确运行;对其他类型返回的都是NaN(Not a Number)。
站在用户的角度思考问题,与客户深入沟通,找到凌云网站设计与凌云网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广、域名申请、虚拟空间、企业邮箱。业务覆盖凌云地区。
function test(n,d){
if(isNaN(n)){
return "n必须是数字!";
}
/*只考虑数字的情况.因为n可以是随便的数字.
如果说n=16那就16进制可以用上ABCDEF
那么如果输入100 你要用什么符号?
所有只考虑数字的情况.输入的必须是数字.省的麻烦.
还有小数之类的这里就不处理了*/
if(isNaN(d)){
return "d必须是数字!";
}
var src = (d + "").split("");
var res = 0;
for(i=0;isrc.length;i++){
if(src[i]=n){
return d + "不是 "+n+" 进制数";
}
res += Math.pow(n,(src.length-1-i))*src[i];
}
return res;
}
alert(test(2,101));// 提示 5
alert(test(2,102));//提示 102 不是 2 进制数
以下函数可以将十进制数转为二进制数:
#include iostream
#include malloc.h
#define MAX 33
using namespace std;
/* 十进制数转换为二进制数(字符串表示) */
char *decToBin(long num);
int main()
{
long dec = 123456789;
cout"10进制数:\t"decendl;
cout"2进制数:\t"decToBin(dec)endl;
return 0;
}
/* 十进制数转换为二进制数(字符串表示) */
char *decToBin(long num)
{
char *arr;
char temp;
int i, n;
arr = (char *)malloc(sizeof(char) * MAX);
n = 0;
while(num 0)
{
arr[n++] = num % 2 + '0';
num /= 2;
}
for(i=0; in/2; i++)
{
temp = arr[i];
arr[i] = arr[n-1-i];
arr[n-1-i] = temp;
}
arr[n] = '\0';
return arr;
}
1、十进制数是指各位数字全部由小于10的数字(0..9)组成的数值,如123、45678等。二进制数是指各位数字全部由小于2的数字(0..1)组成的数值,如10、1011等。将十进制数转换为二进制数是将全部由小于10的数字组成的数值转换为全部由小于2的数字组成的数值,如十进制数100转换为二进制数为1100100。
2、将十进制数转换为二进制数的算法是采用辗转取余法,即将待转换数不断除2取余,记录余数,用新的商继续除2取余,直到该数为零。由于余数小于2,故所有余数组成的数值全部由0、1组成。再对这些余数进行逆置即可。
首先,switch语句用错了,每一个case都要以break结束(除非特殊需要),否则,满足case:"a"后,后面的case也会继续执行,直到遇到break。
其次,算法设计问题,进制转换,从高位开始计算需要得到对应的(幂值):
比如:aaaa = 16的3次方 x 10 + 16的2次方 x 10 + 16的1次方 x 10 + 16的0次方 x 10;
如下根据你的代码改过,可以参考。
function HexToDec(inStr) {
var FormatStr = inStr.toLowerCase();
var strLen = FormatStr.length;
var index = 0; //从最低位取值
var HexBit = 1; //index对应进制值
var HTDSult = 0;
while (index strLen) {
switch (FormatStr.substr(strLen-index -1, 1)) {
case "0":
HTDSult = HTDSult + Math.pow(16, index) * 0;
break;
case "1":
HTDSult = HTDSult + Math.pow(16, index) * 1;
break;
case "2":
HTDSult = HTDSult + Math.pow(16, index) * 2;
break;
case "3":
HTDSult = HTDSult + Math.pow(16, index) * 3;
break;
case "4":
HTDSult = HTDSult + Math.pow(16, index) * 4;
break;
case "5":
HTDSult = HTDSult + Math.pow(16, index) * 5;
break;
case "6":
HTDSult = HTDSult + Math.pow(16, index) * 6;
break;
case "7":
HTDSult = HTDSult + Math.pow(16, index) * 7;
break;
case "8":
HTDSult = HTDSult + Math.pow(16, index) * 8;
break;
case "9":
HTDSult = HTDSult + Math.pow(16, index) * 9;
break;
case "a":
HTDSult = HTDSult + Math.pow(16, index) * 10;
break;
case "b":
HTDSult = HTDSult + Math.pow(16, index) * 11;
break;
case "c":
HTDSult = HTDSult + Math.pow(16, index) * 12;
break;
case "d":
HTDSult = HTDSult + Math.pow(16, index - 1) * 13;
break;
case "e":
HTDSult = HTDSult + Math.pow(16, index - 1) * 14;
break;
case "f":
HTDSult = HTDSult + Math.pow(16, index - 1) * 15;
break;
}
index++;
}
return HTDSult;
}
以下函数可以将十进制数转为二进制数:
function Dec2Bin(num){
var num = + num;
return num.toString(2);
}
解释:
var num = + num;为隐式类型转换,将num转为Number类型
num.toString(2);将Number类型转为字符串,参数2表示转为二进制的字符串
a.toString(x) 表示把a转化为x进制的数,你写的例子分别是2,3,8,16进制的结果