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

## 语法

    parseFloat(value)

### 参数

`value`
  需要被解析成为浮点数的值。

### 返回值

  给定值被解析成浮点数。如果给定值不能被转换成数值，则会返回 `NaN`。

## 描述

`parseFloat`是个全局函数,不属于任何对象.

`parseFloat`将它的字符串参数解析成为浮点数并返回.如果在解析过程中遇到了正负号(+或-),数字(0-9),小数点,或者科学记数法中的指数(e或E)以外的字符,则它会忽略该字符以及之后的所有字符,返回当前已经解析到的浮点数.同时参数字符串首位的空白符会被忽略.

如果参数字符串的第一个字符不能被解析成为数字,`则parseFloat`返回`NaN`.

你可以通过调用`isNaN`函数来判断`parseFloat的返回结果是否是` `NaN`.如果`让NaN`作为了任意数学运算的操作数,则运算结果必定也是`NaN`.

`parseFloat` 也可转换和返回 `Infinity值`. 可以使用`isFinite` 函数来判断结果是否是一个有限的数值 (非 `Infinity`, `-Infinity`, 或 `NaN`).

`parseFloat` 也可以转换一个已经定义了 `toString` 或者 `valueOf` 方法的对象，它返回的值和在调用该方法的结果上调用 `parseFloat` 值相同。

## 例子

### 例子: `parseFloat`返回正常数字

下面的例子都返回3.14

    parseFloat("3.14");
    parseFloat("314e-2");
    parseFloat("0.0314E+2");
    parseFloat("3.14more non-digit characters");

### 例子: `parseFloat`返回NaN

下面的例子将返回`NaN`

    parseFloat("FF2");

### 更严格的转换函数

该函数通过正则表达式的方式,在需要更严格地转换float值时可能会有用:

    var filterFloat = function (value) {
        if(/^(\-|\+)?|(\.\d+)(\d+(\.\d+)?|(\d+\.)|Infinity)$/
          .test(value))
          return Number(value);
      return NaN;
    }

    console.log(filterFloat('421'));               // 421
    console.log(filterFloat('-421'));              // -421
    console.log(filterFloat('+421'));              // 421
    console.log(filterFloat('Infinity'));          // Infinity
    console.log(filterFloat('1.61803398875'));     // 1.61803398875
    console.log(filterFloat('421e+0'));            // 421
    console.log(filterFloat('421hop'));            // NaN
    console.log(filterFloat('hop1.61803398875'));  // NaN
    console.log(filterFloat("999 888"));           // NaN
    console.log(filterFloat('.421'));              // 0.421
    console.log(filterFloat('421.'));              // 421

注意上面的代码只是示例。

## 规范

Specification | Status | Comment
--- | --- | ---
ECMAScript 1st Edition. | Standard | Initial definition.
ECMAScript 5.1 (ECMA-262) parseFloat | Standard |
ECMAScript 2015 (6th Edition, ECMA-262) parseFloat | Standard |

## 浏览器兼容性

Update compatibility data on GitHub

| Desktop | Mobile | Server
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | Safari on iOS | Samsung Internet | Node.js
`parseFloat` | Chrome Full support Yes | Edge Full support Yes | Firefox Full support 1 | IE Full support Yes | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Edge Mobile Full support Yes | Firefox Android Full support 4 | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes | nodejs Full support Yes

### Legend

Full support
  Full support

## 相关链接

- `parseInt()`
- `Number.parseFloat()`
- `Number.parseInt()`
- `isNaN()`