parseFloat()
============

La fonction **`parseFloat()`** permet de transformer une chaîne de caractères en un nombre flottant après avoir analysée celle-ci (*parsing*).

Exemple interactif
------------------

Syntaxe
-------


```js
parseFloat(string);
```

### Paramètres

`string`

Une chaîne de caractères la valeur qu'on souhaite analyser et transformer en un nombre flottant.

### Valeur de retour

Un nombre flottant obtenu à partir de l'analyse de la chaîne de caractères. Si le premier caractère ne permet pas d'obtenir un nombre, ce sera la valeur `NaN` qui sera renvoyée.

Description
-----------

`parseFloat` est une fonction non associée à un objet, disponible au plus haut niveau de l'environnement JavaScript.

`parseFloat` analyse l'argument fourni sous la forme d'une chaîne de caractères et renvoie un nombre flottant correspondant. L'analyse de la chaîne s'arrête dès qu'un caractère qui n'est pas +,-, un chiffre, un point ou un exposant. Ce caractère, ainsi que les suivants, seront ignorés. Les blancs en début et en fin de chaîne sont autorisés.

**Note :** Si on souhaite avoir un outil de conversion plus strict, on pourra utiliser `Number(*valeur*)` qui utilise une analyse plus stricte et qui fournit `NaN` pour les valeurs qui contiennent des caractères invalides, quelle que soit leur position.

Si le premier caractère de la chaîne ne peut pas être converti en un nombre, `parseFloat()` renverra `NaN`.

Pour des raisons arithmétiques, la valeur `NaN` n'est jamais un nombre, quelle que soit la base considérée. On peut utiliser la méthode `isNaN` afin de déterminer si le résultat obtenu par `parseFloat()` est `NaN`. Si `NaN` est passé comme valeur lors d'opérations arithmétiques, ces opérations renverront également `NaN` comme résultat.

`parseFloat()` peut également analyser et renvoyer la valeur `Infinity` qui représente l'infini numérique. Ici, on pourra utiliser la fonction `isFinite()` afin de déterminer si le résultat obtenu est un nombre fini (c'est-à-dire qui n'est ni `Infinity`, ni `-Infinity`, ni `NaN`).

`parseFloat()` peut également analyser un objet si celui-ci implémente la méthode `toString()` ou `valueOf()`. La valeur renvoyée par `parseFloat()` le résultat de `parseFloat()` appliqué à la valeur renvoyée par `toString()` ou `valueOf()` .

`parseFloat()` convertit une valeur `BigInt` en une valeur `Number` et perd ainsi en précision car toutes les valeurs `BigInt` ne sont pas représentables en `Number`.

Exemples
--------

### Utiliser `parseFloat()` pour renvoyer un nombre

Les instructions suivantes renvoient toutes la valeur **3.14** :


```js
parseFloat("3.14");
parseFloat("314e-2");
parseFloat("0.0314E+2");
parseFloat("3.14d'autres caractères non numériques");

var titi = Object.create(null);
titi.valueOf = function () {
  return "3.14";
};
parseFloat(titi);
```

### Utiliser `parseFloat()` pour renvoyer `NaN`

Dans cet exemple, le résultat obtenu est `NaN` :


```js
parseFloat("FF2");
```

### `parseFloat` et `BigInt`


```js
parseFloat(900719925474099267n);
// 900719925474099300
```

### Une fonction plus stricte

Si on souhaite éviter de convertir des chaînes qui contiennent des caractères non numériques, on pourra utiliser une expression rationnelle pour filtrer ces valeurs (et obtenir une fonction plus stricte que `parseFloat()`) :


```js
var filterFloat = function (value) {
  if (/^(\-|\+)?([0-9]+(\.[0-9]+)?|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")); // NaN
console.log(filterFloat("421hop")); // NaN
console.log(filterFloat("hop1.61803398875")); // NaN
```


Attention : ce code n'est qu'un exemple et renverra `NaN` pour des valeurs pourtant valides comme `1.` ou `.5`.

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-parsefloat-string |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `parseInt()`
* `Number.parseFloat()`
* `Number.parseInt()`
* `Number.toFixed()`
* `isNaN()`