0

私は、バイナリ数値を10進数に変換する非常に簡単なプログラムを作成しています。小数点から2進数への変換では、非常に大きな数値に小さな数値を追加しようとすると、私が奇妙なエラーを起こしていることに気付きました。たとえば、私はプログラムの入力220002を小数点として与え、その数値を二進数110101101101100020に変換します。これをデバッグすると、最後に110101101101100000 + 10を実行し、その結果は110101101101100020でした。JavaScriptで大きな整数の追加に問題がある

なぜこれが起こったのか、私は混乱しています。私は本当に分かりません、助けていただければ幸いです。また、バイナリ形式で大きな数を行う場合もあれば、バイナリ数をまったく変更しない場合もあります。それが役に立つなら、私のコードはここにあります。

$("#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桁です。

関連する問題