Estoy tratando de analizar dos valores de una cuadrícula de datos. Los campos son numéricos, y cuando tienen una coma (ej. 554,20), no puedo obtener los números después de la coma. Lo he intentado parseInt
y parseFloat
. ¿Cómo puedo hacer esto?
javascript
parsing
floating-point
Kamil Kiełczewski
fuente
fuente
Respuestas:
Si están destinados a ser valores separados, intente esto:
Si están destinados a ser un valor único (como en francés, donde la mitad se escribe 0,5)
fuente
+(string)
lugar de loparseString(string)
que sugiere @Stev a continuación. Entonces, el primer ejemplo seríav1 = +(values[0]); v2 = +(values[1]);
.6.000.000
? La función reemplazar solo reemplaza el primer separador de coma¿Alguna vez has tratado de hacer esto? :pags
+ (cadena) convertirá la cadena en flotante.
¡Práctico!
Entonces, para resolver su problema, puede hacer algo como esto:
fuente
+(str)
solución:parseFloat
ignora los caracteres no válidos después del número,+(str)
devuelveNaN
en esos casos, que es exactamente lo que necesito.Reemplace la coma con un punto.
Esto solo devolverá 554:
Esto devolverá 554.20:
Entonces, al final, simplemente puede usar:
No olvide que
parseInt()
solo debe usarse para analizar enteros (sin puntos flotantes). En su caso, solo devolverá 554. Además, llamar a parseInt () en un flotante no redondeará el número: tomará su piso (el entero inferior más cercano).Ejemplo extendido para responder la pregunta de Pedro Ferreira de los comentarios:
Si el campo de texto contiene miles de puntos de separación, como en
1.234.567,99
esos podrían eliminarse de antemano con otroreplace
:fuente
Si extiende un objeto String como este ...
.. puedes ejecutarlo así
funciona con punto también
fuente
@GusDeCool o cualquier otra persona tratando de reemplazar más de un separadores de miles, una forma de hacerlo es una expresión regular reemplazo global:
/foo/g
. Solo recuerde que.
es un metacarácter, por lo que debe escapar o ponerlo entre paréntesis (\.
o[.]
). Aquí hay una opción:fuente
Puedes usar esta función. Reemplazará las comas con '' y luego analizará el valor del plano y luego ajustará nuevamente el valor de las comas.
fuente
Tuve el mismo problema, excepto que no sabía de antemano cuáles eran los separadores de miles y el separador decimal. Terminé escribiendo una biblioteca para hacer esto. Si te interesa, aquí está: https://github.com/GuillaumeLeclerc/number-parsing
fuente
Tratar
fuente