2015-10-15 112 views
3

我想評估一個十進制數字以零開頭。Javascript評估號以0開頭爲十進制

例如,讓我們定義convertToDec

convertToDec(010) => 10 
convertToDec(0010) => 10 
convertToDec(0123) => 123 

等。

因爲所有的JS數字與0基地8進行評估開始,我試圖做這樣的:

function convertToDec(num){ 
    return parseInt(num.toString(), 10); 
} 

但是toS tring函數解析基數爲8的數字。

有什麼建議嗎?

謝謝!

回答

4

如果你字面上在JavaScript中寫0010,那麼它將被視爲一個八進制數。這就是解析器的工作原理。

MDN's docs來自:

  • 十進制整數文字由數字序列的無前導0(零)。
  • 整數字面上的前導0(零)表示它是八進制的。八進制整數只能包含數字0-7。
  • 前導的0x(或0X)表示十六進制。十六進制整數可以包括數字(0-9)和字母a-f和A-F。
  • 前導0b(或0B)表示二進制。二進制整數可以包括數字只有0和1

所以,當你寫convertToDec(0010),您的瀏覽器將此解釋爲convertToDec(8)。這是已經「轉換」爲8,因爲您使用了「八進制文字」。

如果你想文字"0010",那麼你需要使用一個字符串。

parseInt("0010", 10); // 10 
2

您需要使用字符串參數而不是數字來呼叫convertToDec

function convertToDec(num){ 
 
    return parseInt(num, 10); 
 
} 
 
alert(convertToDec("010"));

如果你給它一個號作爲參數,數量已經由JavaScript解釋器解析,該功能無法取回您最初鍵入的內容。 JS解釋器將從0開始的數字解析爲八進制數。