¿Cómo puedo analizar una cadena con una coma como separador de miles en un número?

Resuelto user1540714 asked hace 12 años • 16 respuestas

Lo tengo 2,299.00como 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);
Expandir fragmento

user1540714 avatar Jul 26 '12 16:07 user1540714
Aceptado

Sí, elimine las comas:

let output = parseFloat("2,299.00".replace(/,/g, ''));
console.log(output);
Expandir fragmento

Sam avatar Jul 26 '2012 09:07 Sam

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 Intlobjeto 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 parsecontraparte :(

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
David Meister avatar Feb 02 '2017 10:02 David Meister