Javascript 为什么赢了';t parseInt使用前导0';s

Javascript 为什么赢了';t parseInt使用前导0';s,javascript,parseint,Javascript,Parseint,当我运行它时,t由于某种原因是92。如果我删除前导的0,那么它可以正常工作。为什么会这样?使用第二个参数(基数): 指定数字应以10为基数进行分析 从MDN文档: 如果基数未定义或为0(或不存在),JavaScript将假定: 如果输入字符串以“0x”或“0x”开头,则基数为16(十六进制),并解析字符串的其余部分 如果输入字符串以“0”开头,则基数为8(八进制)或10(十进制)。具体选择哪个基数取决于实现。ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持这一点。因此,在

当我运行它时,
t
由于某种原因是
92
。如果我删除前导的0,那么它可以正常工作。为什么会这样?

使用第二个参数(基数):

指定数字应以10为基数进行分析

从MDN文档:

如果基数未定义或为0(或不存在),JavaScript将假定:

  • 如果输入字符串以“0x”或“0x”开头,则基数为16(十六进制),并解析字符串的其余部分
  • 如果输入字符串以“0”开头,则基数为8(八进制)或10(十进制)。具体选择哪个基数取决于实现。ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持这一点。因此,在使用parseInt时,请始终指定基数
  • 如果输入字符串以任何其他值开头,则基数为10(十进制)
并参考ECMAScript 5:

parseInt函数生成一个整数值,该整数值由根据指定基数解释字符串参数的内容决定。忽略字符串中的前导空格。如果基数未定义或为0,则假定为10,除非数字以字符对0x或0x开头,在这种情况下,假定基数为16。若基数是16,那个么数字也可以选择以字符对0x或0x开头

参考:

使用第二个参数(基数):

指定数字应以10为基数进行分析

从MDN文档:

如果基数未定义或为0(或不存在),JavaScript将假定:

  • 如果输入字符串以“0x”或“0x”开头,则基数为16(十六进制),并解析字符串的其余部分
  • 如果输入字符串以“0”开头,则基数为8(八进制)或10(十进制)。具体选择哪个基数取决于实现。ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持这一点。因此,在使用parseInt时,请始终指定基数
  • 如果输入字符串以任何其他值开头,则基数为10(十进制)
并参考ECMAScript 5:

parseInt函数生成一个整数值,该整数值由根据指定基数解释字符串参数的内容决定。忽略字符串中的前导空格。如果基数未定义或为0,则假定为10,除非数字以字符对0x或0x开头,在这种情况下,假定基数为16。若基数是16,那个么数字也可以选择以字符对0x或0x开头

参考:

试试这个:

t = parseInt(avar, 10);
如果字符串以
0
开头,一些浏览器可能会认为它是一个八进制数

但是,在使用新ECMAScript标准的现代浏览器中,不需要使用
,10
,因为除非指定或以
0x
(十六进制)开头,否则它们将始终被视为十进制

Chrome是默认基数为10的浏览器之一

参考:第104页

parseInt
函数生成一个由字符串内容解释决定的整数值 根据指定基数的参数。忽略字符串中的前导空格。如果基数未定义或为0, 假定为10,但数字以字符对0x或0x开头时除外,在这种情况下,数字以基数开头 假设为16。如果基数为16,则数字也可以选择以字符对0x或0x开头

试试这个:

t = parseInt(avar, 10);
如果字符串以
0
开头,一些浏览器可能会认为它是一个八进制数

但是,在使用新ECMAScript标准的现代浏览器中,不需要使用
,10
,因为除非指定或以
0x
(十六进制)开头,否则它们将始终被视为十进制

Chrome是默认基数为10的浏览器之一

参考:第104页

parseInt
函数生成一个由字符串内容解释决定的整数值 根据指定基数的参数。忽略字符串中的前导空格。如果基数未定义或为0, 假定为10,但数字以字符对0x或0x开头时除外,在这种情况下,数字以基数开头 假设为16。如果基数为16,则数字也可以选择以字符对0x或0x开头


分析带前导零的数字会将该数字视为八进制。要覆盖此设置,您需要将
parseInt
的基数参数设置为10(以10为基数,而不是以8为基数)。

解析带前导零的数字会将该数字视为八进制。若要覆盖此设置,需要将
parseInt
的基数参数设置为10(以10为基数,而不是以8为基数)。

parseInt
如果有前导零,则采用八进制表示法,因此希望传入一个
radix
作为第二个参数,告诉函数以10为基数解析字符串

avar = "0000013482000000";
t = parseInt(avar,10);

应该修复它。

parseInt
如果有前导零,则采用八进制表示法,因此希望传入一个
基数
作为第二个参数,告诉函数将字符串解析为基数10 int

avar = "0000013482000000";
t = parseInt(avar,10);

应该修复它。

关于ECMAScript 5,情况并非如此。如果数字以
0x
0x
开头,则视为基数16。@Ian-如果数字以
0x
开头,则视为已指定。第二个参数是如何指定的特定字符串格式的?@Ian-我编辑了我的答案。我知道你的意思,我只是为了其他人而指出:)ECMAScript 5不是这样。如果数字以
0x
0x
开头,则视为基数16。@Ian-如果数字以
0x
开头,则视为已指定。第二个参数是如何指定的特定字符串格式?@Ian-