【发布时间】:2019-08-03 14:25:30
【问题描述】:
基本上是十进制-二进制转换。代码如下:
function convert() {
var val = $("txtIn").value;
if (val ===""){
alert("No value entered for converstion.");
return;
}
var cT = document.getElementsByName("tType");
if (cT[0].checked) {
//to Binary
var dval = parseInt(val);
if (isNaN(dval)) {
alert("Input value is not a number!");
} else if ((val % 1) !==0) {
alert("Input value cannot include fraction or decimal");
} else if (dval < 0) {
alert("Input value must be a positive value.");
} else {
convertByArray(dval);
}
} ***else if (cT[1].checked)*** {
//to decimal
var bval = parseInt(val,2);
if (isNaN(bval)) {
alert("Input value is not a number!");
} else if ((val % 1) !==0) {
alert("Input value cannot include fraction or decimal");
} else if (bval === 0 || dval === 1) {
alert("Input value can only be 1s and 0s.");
} else {
convertByArray(dval);
}
//validity check, only 1s and 0s permitted, acknowledge spaces, cannot
//be negative
} else {
alert("Please select a conversion type.");
}
}
cT[1](二进制到十进制)是给我带来麻烦的部分。当我在 Firefox 中运行它时,它会返回输入,而不是所需的二进制到十进制。不知道我做错了什么。
dval 变量有自己的转换函数,所以想声明一个bval 并给出自己的如下,但仍然不是所需的输出。不知道我做错了什么:
function convertByArray(dval) {
var rA = new Array();
var r,i,j;
i=0;
while (dval > 0) {
r = dval % 2; //remainder
rA[i] =r;
var nV = (dval - r) / 2;
$("txtCalc").value = $("txtCalc").value +
"Decimal " + dval + " divided by 2 = " + nV +
" w/ Remainder of: " + r +"\n";
i += 1;
dval = nV;
}
for(j=rA.length-1; j>=0; j--) {
$("txtOut").value = $("txtOut").value + rA[j];
}
}
【问题讨论】:
标签: javascript data-conversion