2017-04-08 20 views
0

似乎應該很簡單,但我一直在使用googling我的後端,因此一直未能拿出一個辦法。我認爲這個帖子與我見過的很多其他人的區別在於,我的輸入是一個整數,儘管它可能不是一個合適的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

所以我想我m卡在確定接收的格式整數(即十六進制,十進制)。

感謝您的幫助和抱歉,如果我錯過了明顯的東西。

+0

將'someNum'永遠是一個1個添附,並可能隨後,0的? – MattDionis

+0

否,.. someNum可以是0250,0371,04,040,500,623等, – InaMastabba

回答

2

您需要提供僞整數作爲字符串。如果您輸入的是數字文字,那麼在調用parseInt()之前,它會被Javascript編譯器解析爲一個數字,Javascript編譯器會將以0開頭的數字視爲八進制數。因此,它應該是:

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

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

0

0開頭的整數文字被認爲是8位或8位數字,與整數以0x開頭的整數被認爲是16位或16進制數相同。我不知道字符串內部的整數是否會發生同樣的情況。

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

嘗試輸入0109。你應該得到一個錯誤-9不是一個有效的八進制數字。但說實話,我從來沒有使用過八進制數。

相關問題