0

Я просто делаю очень простую программу для преобразования двоичных чисел в десятичные и наоборот. Выполняя десятичное преобразование в двоичное число, я понял, что сталкивался с странной ошибкой, когда пытаюсь добавить небольшое число к очень большому числу. Например, я передал бы свой ввод программы 220002 в виде десятичного числа, и он преобразует это число в двоичный номер 110101101101100020. При отладке я понял, что в самом конце он сделал 110101101101100000 + 10, а результат был 110101101101100020.Имея проблему с большим целым добавлением в JavaScript

Я так смущен, почему это произошло. Я не уверен, помощь будет оценена. Он также делал это с меньшими числами, например, иногда он делал бы большое число в двоичной форме + 1, он вообще не изменил бы двоичный номер. Вот мой код, если он помогает.

$("#convertDecimalBinary").on("click", function() { 
    var decimal = $("#inputDecimal").val(); 
    console.log(!isNaN(decimal)); 
    if(!isNaN(decimal)) { 
     var binary = 0; 
     var multiplier = 1; 
     var num = 1; 
     while(num * 2 <= decimal) { 
     num *= 2; 
     multiplier *= 10; 
     } 
     while(decimal > 0) { 
     if(decimal - num >= 0) { 
      decimal -= num; 
      binary += multiplier; 
     } 
     num /= 2; 
     multiplier /= 10; 
     } 
     $("#inputBinary").val(binary); 
    } 
    }) 

ответ

0

См float64, This gives 15–17 significant decimal digits precision.. Ваш номер имеет 18 цифр.