parseInt()和parseFloat()浅解

140 阅读3分钟

parseInt()parseFloat()两个函数进行浅浅的使用理解一下。

parseFloat()函数

语法

parseFloat(string)

string 必需。传递需要解析的字符串。

定义与用法

parseFloat() 函数可解析一个字符串,并返回一个浮点数。

该函数判断传入字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止,然后以数字的形式返回。

注意

  1. 如果字符串的首个字符不是数字(0-9)小数点(.)正负号(+、-)中任意一个,那么就会返回NaN
  2. 如果在解析字符串的过程中,解析到了上述条件外的字符或者指数(e、E),那么就以数字格式返回此字符之前的数字;
  3. 参数首位的空白符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() 函数可解析一个字符串,并返回一个整数

注意

  1. 当参数radix 的值为0,或没有设置radix时,parseInt()会根据 string 来判断数字的基数
  2. 如果string"0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
  3. 如果字符串string"0"开头, 基数是8(八进制)或者10(十进制),那么具体是哪个基数由实现环境决定。ECMAScript 5 规定使用10,但是并不是所有的浏览器都遵循这个规定。因此,永远都要明确给出radix参数的值。
  4. 如果 string 1 ~ 9的数字开头,parseInt()将把它解析为十进制的整数。
  5. 如果radix2 ~ 36之外会返回NaN

例子

parseInt('11',8)
//输出 9
parseInt('hello',8)
//输出NaN
parseInt('12.77',8)
//输出 10

来看一个特殊的🌰。大家看一下输出。

parseInt(06767,8)
parseInt(6767,8)

输出分别为:19173575

也许你没有疑惑,但是我*@$#!*有......

其实前面也说过,当第一个参数string 不是字符串类型的时候,会将该类型通过toString()转换为字符串。

输出一的步骤:

  1. 06767通过toString()转换为字符串,会将0开头的数字默认为8进制数,将其转为'3575';
  2. 实际的式子为parseInt('3575',8);
  3. 故答案为 1917

输出二的步骤:

  1. 将 6767 通过toString()转换为字符串,此时开头没有0,故会将数字转为'6767';
  2. 实际的式子为parseInt('6767',8);
  3. 故答案为3575