JS中parseInt使用问题解析
一般我们需要从其他地方(服务器或参数)获得一个字符串形式的数字(比如:str=“00057”)
而又想在此数据上进行算术操作,比如想得到str+2=59
那么我们就需要用到js的parseInt()函数
parseInt()是把对应的数字字符串数据化,并可以在其上进行相应的算术计算
然而,在使用parseInt()函数的时候,还需注意点小细节:
比如:parseInt("0057") 结果为57 ,而parseInt("0058")结果为5
parseInt("007")结果为7,而parseInt("008")结果为0
这与我们所祈愿的有所不同,究竟为何
parseInt()函数的完整形式是:parseInt(string, radix)的作用是将string转换为整数,第二个参数是设置string的格式,常用的有2、8、10、16,表示string是多少进制的数。
radix 可取值的范围是2~36,如果不在这个范围内,将返回NaN。
如果设置radix的值是0或者不设置时,会自动识别string的格式:
以 "0x" 开头,parseInt() 会把 string 除0x外的其余部分当作十六进制数,
以 "0" 开头,parseInt() 会把 string 除0外的字符当作八进制或十六进制数,
以 1 ~ 9 的数字开头,parseInt() 将把它当作十进制数。
所以产生上述原因是因为我们没有设置第二个类型参数,以致以"0"开头的字符串数据被当做了八进制
所以以后在使用parseInt(String,radix)函数时,把第二个进制参数加上,以防出错。
parseInt("0058",10)结果为58,就是我们想要的了
这表示把"0058"以十进制表示
百流积聚,江河是也;文若化风,可以砾石。