可能重复:
Workarounds for JavaScript parseInt octal bug
How to parseInt a string with leading 0
document.write(parseInt("07"));
制作“7”
document.write(parseInt("08"));
产生“0”
这对我来说是个问题(抱歉这个唠叨,我必须或者我不能提交问题)。任何人都知道为什么它是愚蠢的或者是否有更好的功能?
答案 0 :(得分:14)
如果参数以0开头,则它将被解析为八进制,而08不是有效的八进制数。提供第二个参数10
,它指定基数 - 基数10。
document.write(parseInt("08", 10));
答案 1 :(得分:6)
使用此修改
parseInt("08",10);
parseInt(string, radix)
如果省略radix参数,则JavaScript假定以下内容:
答案 2 :(得分:2)
您希望parseInt('08', 10)
告诉它解析为小数。
答案 3 :(得分:2)
您只是以错误的方式使用该函数的输入参数。查看this了解详情。基本上:
parseInt()函数解析一个字符串并返回一个整数。
radix参数用于指定要使用的数字系统 例如,使用16(十六进制)的基数表示 字符串中的数字应该从十六进制数解析为a 十进制数。
如果省略radix参数,则JavaScript假定以下内容: 如果字符串以“0x”开头,则基数为16(十六进制) 字符串以“0”开头,基数为8(八进制)。这个功能是 deprecated如果字符串以任何其他值开头,则基数为10 (十进制)
所以07和08解析为八进制。这就是为什么07是7和08是0(它四舍五入到最接近)
答案 4 :(得分:1)
试试这个:
parseInt('08', 10)
它将产生8