2016-04-12 4 views
0

10進数を2進数に変換しようとしていますが、この作業を行うC++の関数を書いてもうまくいきましたが、Javascriptで同じ関数を書いたとき、 "11101111111111"のような偽の値を印刷してしまいました。 誰でもこの機能の問題点を教えていただけますか?12月からJSのバイナリへの変換

var decToBinary=function() { 
    var n=16,s=""; 
    while(n) { 
     if(n % 2 == 0) 
      s += "0"; 
     else 
      s += "1"; 
     n /= 2; 
    } 
    s.reverse(); 
    return s; 
} 
+0

だけFYI、このための組み込み関数があります。 ['toString'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString):' var n = 16; n.toString(2); // 10000'また、現在のコードに構文エラーがあります。それは 'var decToBinary = function(){...' 'function decToBinary(){...' –

+0

私はそこに関数が組み込まれていることを知っていますが、もしこれをやりたければ、それはしませんでしたか? –

答えて

0

問題がn === 0あなただけの終了という事実から生じる多くの場合、あなたは、浮動小数点演算の制限は、それがゼロにさせるまでは漸増2nを分割するようになりますどのn === 1を取得します。代わりに、n1以上でない場合は終了してください。

function log(msg) { 
 
    document.querySelector('pre').innerHTML += msg + '\n'; 
 
} 
 

 
function decToBinary(n) { 
 
\t var str = ''; 
 
\t while(n >= 1) { 
 
    \t if (n % 2 === 0) { 
 
    \t str += '0'; 
 
    } else { 
 
    \t str += '1'; 
 
    } 
 
    
 
    n /= 2; 
 
    } 
 
    str = str.split('').reverse().join(''); 
 
    return str; 
 
} 
 

 
log('1: ' + decToBinary(1)); 
 
log('2: ' + decToBinary(2)); 
 
log('15: ' + decToBinary(15)); 
 
log('16: ' + decToBinary(16));
<pre></pre>

0

how do I convert an integer to binary in javascript?

私は、これはあなたがチェックアウトしたいと思うのリンクになると思います。

function dec2bin(dec){ 
    return (dec >>> 0).toString(2); 
} 
+0

私はその質問を見て、私とは違う、もう一度それを読んでください –

+0

申し訳ありません、私は完全にそれを逃した。逆に実際にオブジェクトを編集するわけではないので、s = s.reverse()を見てみてください。また、戻ってくる文字列を見ると、正しい表現が "11101111111111"の予備の逆であるように見えます。 – hunda27

関連する問題