От десятичной к двоичной системе - PullRequest
0 голосов
/ 17 февраля 2019

Я хочу сделать простой сайт, потому что я хочу изучать JavaScript.Веб-сайт будет иметь только один (номер) вход с именем «число».После нажатия кнопки «Отправить» веб-сайт преобразует число из десятичной в двоичную систему и показывает ответ.

Это часть javascript, которая должна преобразовать число и показать ответ в виде div с ID = result:

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.

Ответы [ 4 ]

0 голосов
/ 17 февраля 2019

Для этой цели на самом деле вы можете забыть весь свой код и просто использовать 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>
0 голосов
/ 17 февраля 2019

Самый простой способ - использовать метод 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>
0 голосов
/ 17 февраля 2019

Это намного проще, чем это.Метод .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));  
});
<input><button>Convert!</button>
0 голосов
/ 17 февраля 2019

Вот исправленный код: Совет. Всякий раз, когда вам нужно приклеить два числа для формирования строки, обязательно выполните 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...