JavaScritp拆分二进制数

时间:2018-02-11 12:06:39

标签: javascript function split

我开始学习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;
                }

            }

3 个答案:

答案 0 :(得分:1)

假设点是小数点分隔符,那么您可以将parseIntradix 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=''>