avar = "0000013482000000";
t = parseInt(avar);
当我运行时,由于某种原因t
为92
。如果我删除前导0,那么它的工作正常。为什么会这样?
答案 0 :(得分:1)
使用第二个参数(基数):
t = parseInt(avar, 10);
指定应在基数10中解析数字。
来自MDN文档:
如果radix未定义或0(或不存在),则JavaScript假定以下内容:
参考ECMAScript 5:
parseInt函数根据指定的基数,通过解释字符串参数的内容来生成一个整数值。字符串中的前导空格被忽略。如果radix未定义或为0,则假定为10,除非数字以字符对0x或0X开头,在这种情况下假设基数为16。如果radix为16,则number也可以选择以字符对0x或0X开头。
参考:
答案 1 :(得分:1)
试试这个:
avar = "0000013482000000";
t = parseInt(avar,10);
如果字符串以0
开头,某些浏览器可能会认为它是八进制数。
但是,在具有新ECMAScript标准的现代浏览器中不需要,10
,因为除非指定或以0x
(十六进制)开头,否则它们将始终被视为十进制。
Chrome是默认基数为10的浏览器之一。
参考:ECMAScript Language Specification Page 104
parseInt
函数产生一个整数值,该值由字符串内容的解释决定 参数根据指定的基数。字符串中的前导空格被忽略。如果基数未定义或0, 它被假定为10,除非数字以字符对0x或0X开头,在这种情况下是基数 假设为16。如果radix为16,则该数字也可以选择以字符对0x或0X开头。
答案 2 :(得分:1)
使用前导零解析数字会导致数字被视为八进制。要覆盖它,您需要将parseInt
的基数参数设置为10(基数为10而不是基数为8)。
答案 3 :(得分:1)
parseInt
假定八进制表示法,所以你想传入radix
作为第二个参数,告诉函数将字符串解析为基数10 int。
parseInt(avar, 10)
应该修复它。