好的我有以下“脚本”:
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应用于所有“数学运算”......但没有成功。 我认为这是一个小错误,但我不明白:(
答案 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不是数字的一部分,就像看0A
或0T
(或任何其他非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。