对parseInt()和parseFloat()两个函数进行浅浅的使用理解一下。
parseFloat()函数
语法
parseFloat(string)
string 必需。传递需要解析的字符串。
定义与用法
parseFloat() 函数可解析一个字符串,并返回一个浮点数。
该函数判断传入字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止,然后以数字的形式返回。
注意
- 如果字符串的首个字符不是
数字(0-9)、小数点(.)、正负号(+、-)中任意一个,那么就会返回NaN; - 如果在
解析字符串的过程中,解析到了上述条件外的字符或者指数(e、E),那么就以数字格式返回此字符之前的数字; - 参数首位的
空白符和0会被忽略。
例子
parseFloat('12.33.3')
// 输出 12.33
parseFloat('*12.33')
//输出 NaN
parseFloat('.12.33')
// 输出 0.12
parseFloat('314e-2')
//输出 3.14
parseFloat('hello')
//输出NaN
parseFloat('040')
//输出 40
parseFloat(' 12 12')
//输出 12
parseInt()函数
语法
parseFloat(string,radix)
string 必需。传递需要解析的字符串。如果不是字符串会被toString()转换为字符串。
radix 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。如果省略该参数或其值为0,则数字将以10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
定义与用法
parseInt() 函数可解析一个字符串,并返回一个整数。
注意
- 当参数
radix的值为0,或没有设置radix时,parseInt()会根据string来判断数字的基数。 - 如果
string以"0x"开头,parseInt()会把string的其余部分解析为十六进制的整数。 - 如果字符串
string以"0"开头, 基数是8(八进制)或者10(十进制),那么具体是哪个基数由实现环境决定。ECMAScript 5规定使用10,但是并不是所有的浏览器都遵循这个规定。因此,永远都要明确给出radix参数的值。 - 如果
string以1 ~ 9的数字开头,parseInt()将把它解析为十进制的整数。 - 如果
radix在2 ~ 36之外会返回NaN。
例子
parseInt('11',8)
//输出 9
parseInt('hello',8)
//输出NaN
parseInt('12.77',8)
//输出 10
来看一个特殊的🌰。大家看一下输出。
parseInt(06767,8)
parseInt(6767,8)
输出分别为:1917,3575
也许你没有疑惑,但是我*@$#!*有......
其实前面也说过,当第一个参数string 不是字符串类型的时候,会将该类型通过toString()转换为字符串。
输出一的步骤:
- 将
06767通过toString()转换为字符串,会将0开头的数字默认为8进制数,将其转为'3575'; - 实际的式子为
parseInt('3575',8); - 故答案为
1917。
输出二的步骤:
- 将 6767 通过
toString()转换为字符串,此时开头没有0,故会将数字转为'6767'; - 实际的式子为
parseInt('6767',8); - 故答案为
3575。