【问题标题】:From Decimal to Binary system从十进制到二进制
【发布时间】:2019-02-18 04:07:47
【问题描述】:

我想制作一个简单的网站,因为我想学习 javascript。该网站将只有一个(数字)输入,名为“数字”。点击提交按钮后,网站会将数字从十进制转换为二进制并显示答案。

这是应该转换数字并在 ID = 结果的 div 中显示答案的 javascript 部分:

var selectedNumber = document.getElementByName("number").value;
var k = [];
var a = 0;
var b = 1;

while (selectedNumber > 1){
  if(selectedNumber%2 < 1){
    k=k.append(a);
    selectedNumber = Math.floor(selectedNumber/2);
  }
  else{
    k=k.append(b);
    selectedNumber = Math.floor(selectedNumber/2);
  }
}
k=k.append(b);

for i in reversed(k){
  document.getElementById("result").innerHETML = i;
}

不幸的是,我没有太多使用 javascript 的经验,而且这段代码不起作用。我在 python 中做了一个类似的程序,并基于 python 中的代码。

【问题讨论】:

    标签: javascript binary


    【解决方案1】:

    以下是更正后的代码: 提示 - 每当您必须将两个数字粘合成一个字符串时,请确保执行 1 + "" +2

    var selectedNumber = 105;//document.getElementByName("number").value;
    var k = [];
    var a = 0;
    var b = 1;
    var output = '';
    
    while (selectedNumber > 1){
      if(selectedNumber%2 < 1){
        k=k+""+a;
        selectedNumber = Math.floor(selectedNumber/2);
      }
      else{
        k=k+""+b;
        selectedNumber = Math.floor(selectedNumber/2);
      }
    }
    k=k+""+b;
    
    console.log(k);
    //document.getElementByName("number").value = k;
    

    【讨论】:

      【解决方案2】:

      最简单的方法是使用toString(2) 方法。

      let a  =7
      console.log(a.toString(2))

      我对您的代码做了一些小改动。删除了多余的行。我将值附加到字符串而不是数组的前面(稍后您将其反转并加入)。

      function handle(){
        let selectedNumber = document.getElementById("number").value;
      let k = '',a = 0, b = 1;
      
      while (selectedNumber > 1){
        if(selectedNumber%2 < 1){
          k= a+k
        }
        else{
          k=b+k
        }
        selectedNumber = Math.floor(selectedNumber/2);
      }
      k=b+k;
      
      document.getElementById("result").innerHTML = k;
      }
      #result{
        color: green;
        font-size:25px;
      }
      <input id='number' placeholder='enter value'></input>
      <button onClick=handle()>Convert to binary</button> 
      
      <div id='result'></div>

      【讨论】:

        【解决方案3】:

        比这简单得多。 .toString() 方法采用一个可选参数,可用于将数字转换为不同的数字基系统,如二进制、八进制或十六进制值。

        在输入值前面加上+,强制输入值变为数字。

        document.querySelector("button").addEventListener("click", function(){
          let number = +document.querySelector("input").value; // Convert input into a string
          console.clear();
          console.log("The decimal: " + number + " converted to a binary is: "  + number.toString(2));
          console.log("The decimal: " + number + " converted to an octal is: "  + number.toString(8));
          console.log("The decimal: " + number + " converted to a hex is: "  + number.toString(16));  
        });
        &lt;input&gt;&lt;button&gt;Convert!&lt;/button&gt;

        【讨论】:

          【解决方案4】:

          为了这个目标,实际上你可以忘记所有代码并简单地使用Number.prototype.toString()。它需要 base 的可选参数,用于将 number 转换为 string

          示例:

          const convert = () =>
          {
              let number = document.getElementById("iNumber").value;
              binNumber = Number.parseInt(number, 10).toString(2);
              document.getElementById("dRes").innerHTML = binNumber;
          };
          <input id="iNumber" type="number">
          <button id="btnToBinary" onclick="convert()">
            Convert To Binary
          </button>
          <div id="dRes"></div>

          【讨论】: