J'essaie d'analyser deux valeurs d'une grille de données. Les champs sont numériques et lorsqu'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 ceci?
javascript
parsing
floating-point
Kamil Kiełczewski
la source
la source
Réponses:
S'ils sont censés être des valeurs distinctes, essayez ceci:
S'ils sont censés être une seule valeur (comme en français, où la moitié est écrite 0,5)
la source
+(string)
au lieu de ceparseString(string)
qui est suggéré par @Stev ci-dessous. Donc, le premier exemple seraitv1 = +(values[0]); v2 = +(values[1]);
.6.000.000
. Fonction remplacer uniquement remplacer le premier séparateur de virgulesAvez-vous déjà essayé de faire cela? : p
+ (chaîne) convertira la chaîne en flottant.
Pratique!
Donc, pour résoudre votre problème, vous pouvez faire quelque chose comme ceci:
la source
+(str)
solution -parseFloat
ignore les caractères invalides après le nombre,+(str)
retourneNaN
dans ces cas, ce qui est exactement ce dont j'ai besoin.Remplacez la virgule par un point.
Cela ne retournera que 554:
Cela retournera 554.20:
Donc au final, vous pouvez simplement utiliser:
N'oubliez pas que cela
parseInt()
ne doit être utilisé que pour analyser des entiers (pas de virgule flottante). Dans votre cas, il ne renverra que 554. De plus, appeler parseInt () sur un flottant ne arrondira pas le nombre: il prendra son étage (entier inférieur le plus proche).Exemple étendu pour répondre à la question de Pedro Ferreira à partir des commentaires:
Si le champ de texte contient des milliers de points de séparation comme
1.234.567,99
ceux-ci, ils pourraient être éliminés au préalable avec un autrereplace
:la source
Si vous étendez un objet String comme ceci ..
.. vous pouvez l'exécuter comme ceci
fonctionne aussi avec dot
la source
@GusDeCool ou quelqu'un d' autre d' essayer de remplacer plus d'un séparateur de milliers, une façon de le faire est un remplacement global regex:
/foo/g
. N'oubliez pas qu'il.
s'agit d'un métacaractère, vous devez donc y échapper ou le mettre entre crochets (\.
ou[.]
). Voici une option:la source
Vous pouvez utiliser cette fonction. Il remplacera les virgules par '' et ensuite il analysera la valeur et ensuite il ajustera à nouveau les virgules en valeur.
la source
J'ai eu le même problème sauf que je ne savais pas à l'avance quels étaient les séparateurs de milliers et le séparateur décimal. J'ai fini par écrire une bibliothèque pour ce faire. Si cela vous intéresse ici c'est: https://github.com/GuillaumeLeclerc/number-parsing
la source
Essayer
la source