web-dev-qa-db-fra.com

JavaScript parseFloat dans différentes cultures

J'ai une question sur le comportement par défaut de la fonction parseFloat de JavaScript dans différentes parties du monde.

Aux États-Unis, si vous appelez parseFloat sur une chaîne "123,34", vous obtiendrez un nombre à virgule flottante 123,34.

Si je développe du code en Suède ou au Brésil et qu'ils utilisent une virgule au lieu d'un point comme séparateur décimal, la fonction parseFloat attend-elle "123,34" ou "123,34".

Veuillez noter que je ne demande pas comment analyser le format numérique d'une culture différente aux États-Unis. Je demande si parseFloat en Suède ou au Brésil se comporte de la même manière qu'aux États-Unis, ou attend-il un nombre dans son format local? Ou pour mieux y penser, un développeur au Brésil/en Suède doit-il convertir des chaînes au format anglais avant de pouvoir utiliser parseFloat après avoir extrait du texte d'une zone de texte?

Veuillez me faire savoir si cela n'a pas de sens.

45
chumphries

parseFloat n'utilise pas la définition de votre locale, mais la définition d'un littéral décimal.

Il analyse uniquement . ne pas ,

Je suis brésilien et je dois remplacer la virgule par un point avant d'analyser les nombres décimaux.

spécification parseFloat

61

Non, parseFloat est spécifié pour analyser DecimalLiterals , qui utilise le point comme séparateur décimal. Cela ne dépend pas des paramètres régionaux de l'environnement actuel.

10
Bergi

Ce n’est pas seulement la Suède/le Brésil. F.ex aux États-Unis, ils ajoutent souvent des virgules en grand nombre, comme $5,762,325.25.

La fonction parseFloat traite essentiellement des décimales, pas des chaînes locales.

En général, JavaScript peut parfois convertir des chaînes/nombres/dates génériques en formats adaptés aux paramètres régionaux, mais pas l'inverse.

4
David Hellsing