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