【问题标题】:How to split binary number in JavaScript如何在 JavaScript 中拆分二进制数
【发布时间】:2018-02-11 12:06:38
【问题描述】:

我决定编写一个程序,用户输入一个像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;
                }
                
            }

【问题讨论】:

  • 点是干什么用的?小数分隔符?还是只是分开两个独立的字符串?

标签: javascript function split


【解决方案1】:

假设点是小数分隔符,那么您可以将带有parseIntradix2 的整数部分转换为十进制值,然后通过取基数的一部分将小数部分转换为数字两个。

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'));

【讨论】:

    【解决方案2】:

    每次迭代都会重新初始化变量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();
    &lt;input id='Result' value=''&gt;

    【讨论】:

      【解决方案3】:

      对于每次迭代,decNumber 都会分配一个新值。您可以将结果存储为字符串并连接每次迭代。

      【讨论】:

        猜你喜欢
        • 2010-09-30
        • 1970-01-01
        • 2015-06-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多