¿Cómo puedo analizar una cadena con una coma como separador de miles en un número?
Lo tengo 2,299.00
como una cadena y estoy intentando analizarlo en un número. Intenté usar parseFloat
, lo que da como resultado 2. Supongo que la coma es el problema, pero ¿cómo solucionaría este problema de la manera correcta? ¿Simplemente quitar la coma?
var x = parseFloat("2,299.00")
console.log(x);
Sí, elimine las comas:
let output = parseFloat("2,299.00".replace(/,/g, ''));
console.log(output);
Eliminar comas es potencialmente peligroso porque, como otros han mencionado en los comentarios, muchas configuraciones regionales usan una coma para significar algo diferente (como un decimal).
No sé de dónde sacaste tu hilo, pero en algunos lugares del mundo "2,299.00"
=2.299
El Intl
objeto podría haber sido una buena manera de abordar este problema, pero de alguna manera lograron enviar la especificación solo con una Intl.NumberFormat.format()
API y sin parse
contraparte :(
La única forma de analizar una cadena con caracteres numéricos culturales en un número reconocible por una máquina de cualquier manera sensata es usar una biblioteca que aproveche los datos CLDR para cubrir todas las formas posibles de formatear cadenas numéricas http://cldr.unicode. organización/
Las dos mejores opciones de JS que he encontrado hasta ahora:
- https://github.com/google/closure-library/tree/master/closure/goog/i18n
- https://github.com/globalizejs/globalizar