Comment convertir une chaîne en un flotteur en JavaScript?
Je suis en train d'analyser les deux valeurs à partir d'une grille de données. Les champs sont numériques, et quand ils ont une virgule (ex. 554,20), je ne peux pas obtenir les chiffres après la virgule. J'ai essayé parseInt
et parseFloat
. Comment puis-je faire cela?
- voir aussi: stackoverflow.com/questions/24318654
Vous devez vous connecter pour publier un commentaire.
Si ils sont destinés à être séparé des valeurs, essayez ceci:
Si ils sont destinés à être une valeur unique (comme en français, où la moitié est écrit 0,5)
+(string)
au lieu deparseString(string)
comme suggéré par @Stev ci-dessous. Ainsi, le premier exemple seraitv1 = +(values[0]); v2 = +(values[1]);
.6.000.000
. La fonction remplacer de remplacer uniquement la première virgule de séparationg
drapeau dans le but de faire un remplacement global sur la chaîne. par exemple,string.replace(/,/g, '.')
.Avez-vous essayé de faire cela? :p
+(string) sera jeté chaîne en float.
Pratique!
Afin de résoudre votre problème, vous pouvez faire quelque chose comme ceci:
+(str)
solution -parseFloat
ignore les caractères non valides après le nombre,+(str)
retourneNaN
dans ces cas, ce qui est exactement ce dont j'ai besoin.Remplacer la virgule par un point.
Cela ne fera que retourner 554:
Ce sera le retour de 554.20:
Donc en fin de compte, vous pouvez simplement utiliser:
N'oubliez pas que
parseInt()
doit uniquement être utilisée pour analyser les entiers (pas de floating points). Dans votre cas, il ne retournera 554. En outre, l'appel de parseInt() sur un flotteur de ne pas arrondir le nombre: il va prendre son étage (le plus proche nombre entier inférieur).Exemple étendu pour répondre à Pedro Ferreira est question de la commentaires:
Si le champ contient le séparateur de milliers de points comme dans
1.234.567,99
ceux qui pourraient être éliminées à l'avance avec un autrereplace
:Si vous étendez objet de type String comme ça..
.. vous pouvez l'exécuter comme ce
des œuvres avec le point comme bien
@GusDeCool ou quelqu'un d'autre essaie de remplacer plus d'une séparateurs de milliers, une façon de le faire est une expression régulière de remplacement global:
/foo/g
. Rappelez-vous juste que.
est un caractère de remplacement, alors vous devez vous échapper ou de le mettre entre parenthèses (\.
ou[.]
). Voici une option:Vous pouvez utiliser cette fonction. Il va remplacer les virgules avec de ' et alors il sera parseFlaot la valeur et après qu'il sera de nouveau régler la virgule de la valeur.
J'ai eu le même problème sauf que je ne sais pas à l'avance quels ont été les séparateurs de milliers et le séparateur décimal. J'ai fini par écrire une bibliothèque pour ce faire. Si vous êtes intéressé ici, c'est : https://github.com/GuillaumeLeclerc/number-parsing
Essayer
JS: