2013-07-31 73 views
4

將某個數字轉換爲某種未知數字格式的前導零。 例如:Javascript - 將零號碼轉換爲將號碼轉換爲某個不同號碼的號碼。不明白爲什麼會發生這種情況

017是越來越轉換爲15

037是越來越轉換爲31

還發現,具有8 0R 9在端部例如其餘相同 號碼:

01818

03838

o5959

一個,我發現了更多的事情是

爲10每下一個範圍轉換後的值與實際值之間的差由2

例如獲得遞增:

範圍00-09區別是0即07的值將爲7,04將爲4

爲範圍010-019差爲017 2值將是15,013將是11

爲範圍020-029差爲027 4值將是23,021將是17

等..

這裏是測試http://jsfiddle.net/rajubera/BxQHF/

我沒有得到爲什麼會這樣一個snipet?

請幫助我如何從具有前導零的數字中得到正確的十進制數?

+4

你將需要發佈一些代碼,以便我們能夠重現問題。 –

+0

[javascript中領先零(http://stackoverflow.com/questions/6505033/leading-zero-in-javascript)和可能的複製[JavaScript中,爲什麼爲八進制處理(http://stackoverflow.com/questions/9071696/JavaScript的爲什麼處理-AS-八進制)的 – apsillers

+0

可能重複的[使用Javascript parseInt函數()與前導零(http://stackoverflow.com/questions/8763396/javascript-parseint-with-leading-zeros) – Bergi

回答

6

如果有一個前導0,它會將其轉換爲八進制(基數爲8),只要它的基數爲8的有效數字(沒有大於7的數字)。

例如:

017在基座8是1×8 + 7 = 15 037在基座8是3×8 + 7 = 31

018被轉換爲18因爲018是不在鹼的有效數字8

注意,行爲作爲所述基體的數量由缺省轉換爲可瀏覽器特定的,所以它的使用很重要時parseInt始終指定鹼/基數:

parseInt("017",10) === 17

更新基於評論:

parseInt需要一個string作爲第一個參數,所以

parseInt("012",10) === 12

+0

Fixed:base 8 if a valid基地8號,否則基地10謝謝! –

+0

如果它轉換爲八進制基地則018應該返回16,但018導致到18 –

+0

我也覺得so..but那麼我怎樣才能得到正確的號碼? –