我开始学习JavaScript。我决定编写程序,用户输入一个二进制数,如11000000.10101000
,然后转换为数字。但我不知道为什么输出只是最后一个数字。这是我的代码:
function ConvertToDec()
{
var binaryNumber = document.getElementById('NumberInput').value;
var decNumber;
var split = binaryNumber.split("\.");
for(i=0; i<split.length; i++) {
decNumber = parseInt(split[i], 2);
//console.log(split[i]);
//console.log(decNumber);
document.getElementById('Result').value = decNumber;
}
}
答案 0 :(得分:1)
假设点是小数点分隔符,那么您可以将parseInt
和radix
2
的整数部分转换为小数值,并将小数部分转换为数字占两个基数的一小部分。
binary decimal (2^n) n ----------------- ------------- ---- 11000000.10101000 10000000 128 7 1000000 64 5 .1 .5 -1 .001 .125 -3 .00001 .03125 -5 ----------------- ------------- 11000000.10101000 192.65625
function bin2dec(bin) {
var [int, frac] = bin.split("\.");
return [...frac].reduce((d, b, i) => d + b / (2 << i), parseInt(int, 2));
}
console.log(bin2dec('11000000.10101000'));
答案 1 :(得分:0)
对于每次迭代,decNumber都会分配一个新值。您可以将结果存储为字符串并连接每次迭代。
答案 2 :(得分:0)
每次迭代都会重新初始化变量decNumber
,您需要存储转换后的值,然后在for-loop
之外将结果分配给输入。
重要:如果您有多个点,则会转换多个数字,即:1111.01010.10101 = number.number.number
。
function ConvertToDec() {
var binaryNumber = "11000000.10101000";
//var binaryNumber = document.getElementById('NumberInput').value;
var decNumber;
var split = binaryNumber.split("\.");
var result = '';
for (var i = 0; i < split.length; i++) {
decNumber = parseInt(split[i], 2);
//console.log(split[i]);
//console.log(decNumber);
result += (result === '' ? '' : '.') + decNumber;
}
document.getElementById('Result').value = result;
}
ConvertToDec();
<input id='Result' value=''>