2017-04-08 4 views
0

シンプルであるはずですが、私は後部をグーグルでグーグルしていて、解決策。私は、私が見た他の多くの人からこの投稿を設定するものは、適切なJS番号ではないかもしれないが、私の入力は整数だということだと思います。JavaScript擬似整数(すなわち0100または03)を受け取り、正しい整数を出力する関数

私はの整数(例えば0100,010,100、0001)をとり、正しい基本10の整数を出力する関数を書こうとしています。例えば

機能は、私が出したいもの0100を受けるのであれば100

で、私は知っていたならば..私は4桁の擬似整数を受けるつもりだったが、私ができた0100言う:

function getRealNumber(someNum){ 
    var realNum = parseInt(someNum, 16); 
    return realNum; 
} 

getRealNumber(0100); 

か:

function getRealNumber(someNum){ 
    var realNum = parseInt(someNum.toString(8)); 
    return realNum; 
} 

getRealNumber(0100); 

私は動作しないでしょう100を受け取った場合、私は明らかに100を返すだろうが。

は私が最初の文字列への入力を変換し、そのようにベース10を指定する整数にそれを解析できると思っていた:

function getRealNumber(someNum){ 
    var someNumString = someNum.toString(); 
    var realNum = parseInt(someNumString, 10); 
    return realNum; 
} 

getRealNumber(0100); 

が、これは、だから、私は」だと思う

64になり受け取った整数(すなわち16進数、8進数)の形式を決定することに固執します。

ご迷惑をおかけして申し訳ありません。

+0

'someNum'は常に1つの先頭に付けられる、そしておそらく0、続くのだろうか? – MattDionis

+0

no、.. someNumは0250,0371,04,040,500,613などとすることができ、 – InaMastabba

答えて

2

疑似整数を文字列として入力する必要があります。数値リテラルを入力すると、Javascriptコンパイラによって数値に変換され、parseInt()が呼び出されます.Javascriptコンパイラでは、0で始まる数値が8進数として扱われます。だから、それは次のようになります。

function getRealNumber(someNum){ 
 
    var realNum = parseInt(someNum, 10); 
 
    return realNum; 
 
} 
 

 
console.log(getRealNumber('0100'));

0

0で始まる整数リテラルは、0xで始まる整数がベース16または16進数とみなされるのと同じ方法で、ベース8または8進数とみなされます。文字列内の整数に対しても同じことが起こるかどうかはわかりません。

01 === 1 
010 === 8 
0100 === 64 
... 

0109と入力してください。エラー-9は有効な8進数ではありません。しかし正直言って私は今まで8進数で作業したことはありません。

関連する問題