2013-07-24 67 views
3

當我這樣做:的JavaScript parseInt函數大的負數給出的NaN

var x = parseInt("–2147483648"); 
console.log(x); 

我得到的價值爲:

NaN 

爲什麼會出現這種情況?

我想測試一個數字是否在C(int)的範圍內,所以我正在執行上述操作,但它不起作用。另外,我想爲C(long)做到這一點,有沒有辦法呢?

例如: 如果我做的:

var x = parseInt("-9223372036854775808"); 
console.log(x); 

現在,我知道,( - +)2^53是在Javascript數的限制。有沒有其他的方法來測試一個表單中的給定值實際上是在long還是int範圍內?

+7

你有沒有注意到? ' - != -' – elclanrs

+0

@elclanrs - 趕上! –

+0

@elclanrs - 趕上!連字符( - )!==破折號( - ) –

回答

11

它應該工作正常,問題是,你使用了錯誤的字符,一個ndash的 VS連字符-

var x = parseInt("-2147483648"); 
console.log(x); 

如果複製/粘貼,你會看到,現在的工作。

+0

謝謝。無法記住我的代碼中這個破折號來自哪裏。 – Rishi

+0

+1好。我開始認爲它與'如果第一個字符不能轉換爲數字,parseInt從[Mozilla的文檔]返回NaN.'(https://developer.mozilla.org/en-US/docs/網絡/ JavaScript的/參考/ Global_Objects/parseInt函數)。顯然誰寫的那個需要更多的咖啡。 –