2011-08-26 24 views
0

好吧,我有以下的 「腳本」:JQUERY int和string加成

var text = '24 - 08'; 
var value = text.split(" - "); 


var result = 24 - value[0]; 
result = result + value[1]; 
alert(result); 

http://jsbin.com/amusaw/edit#javascript,html

所以這個簡單的數學事情的結果是0與parseInt函數或008沒有它。它應該是8. 我試着用幾個不同的數字(而不是08,04或05等) 或22 - 09.

有時結果值是正確的,有時它不是。 我試圖將parseInt應用於所有「數學運算」......沒有成功。 我認爲這是一個很小的錯誤,但我不明白這一點:(

+0

確保你接受一個答案,如果它幫助你! – jbrookover

回答

3

確保您解析整數時指定基地:

parseInt(value[0], 10); 
parseInt(value[1], 10); 

整個代碼:

var text = '24 - 08'; 
var value = text.split(" - "); 


var result = 24 - parseInt(value[0], 10); 
result = result + parseInt(value[1], 10); 
alert(result); 

http://jsbin.com/amusaw/2/edit

當一個字符串以0開始時,parseInt假定該數字是八進制數(基數爲8)。它是不推薦的行爲,但它是行爲方式無論如何。數字08在八進制中無效,因爲只有數字0-7存在,所以它只返回0。它確定8不是數字的一部分,它就像看到0A0T(或任何其他非0-7字符)。

更多關於parseInt(): https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt。事實上,你可以找到parseInt("08");的例子,導致您的問題在該頁面的底部附近。

+0

非常感謝你;) – Jens

0

這似乎使用parseFloat而不是parseInt。 你可以這樣做:

var result = 24 - parseFloat(value[0]); 
result = result + parseFloat(value[1]); 
alert(result); 

然後,您可以轉換與parseInt函數爲int。

+0

非常感謝你;) – Jens

相關問題