JQUERY Int和String Addition

时间:2011-08-26 09:48:55

标签: javascript string math int add

好的我有以下“脚本”:

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

因此,这个简单的数学事物的结果是使用parseInt为0或没有它的008。它应该是8。 我尝试了几个不同的数字(而不是08,04或05等...) 或22 - 09。

有时结果值是正确的,有时则不是。 我试图将parseInt应用于所有“数学运算”......但没有成功。 我认为这是一个小错误,但我不明白:(

2 个答案:

答案 0 :(得分: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");示例。

答案 1 :(得分:0)

这似乎可以使用parseFloat而不是parseInt。 你可以这样做:

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

然后可以使用parseInt转换为int。