tipos round parse float decimals decimales javascript parsing floating-point

round - to string javascript



¿Cómo convertir cadena en float en JavaScript? (7)

¿Alguna vez has tratado de hacer esto? :pag

var str = ''3.8'';ie alert( +(str) + 0.2 );

+ (string) lanzará string en float.

¡Práctico!

Entonces, para resolver su problema, puede hacer algo como esto:

var floatValue = +(str.replace(/,/,''.''));

Estoy tratando de analizar dos valores de un datagrid.
Los campos son numéricos, y cuando tienen una coma (por ejemplo, 554,20), no puedo obtener los números después de la coma.
He intentado parseInt y parseFloat . ¿Cómo puedo hacer esto?


@GusDeCool o cualquier otra persona que intente reemplazar más de un millar de separadores, una forma de hacerlo es un reemplazo global de expresiones regulares: /foo/g . Solo recuerda eso . es un metacarácter, por lo que debe escapar o ponerlo entre corchetes ( /. o [.] ). Aquí hay una opción:

var str = ''6.000.000''; str.replace(/[.]/g,",");


Puede utilizar esta función. Reemplazará las comas con '''' y luego no analizará el valor y, a continuación, volverá a ajustar el valor de las comas.

function convertToFloat(val) { if (val != '''') { if (val.indexOf('','') !== -1) val.replace('','', ''''); val = parseFloat(val); while (/(/d+)(/d{3})/.test(val.toString())) { val = val.toString().replace(/(/d+)(/d{3})/, ''$1'' + '','' + ''$2''); } } return val; }


Reemplace la coma con un punto.

Esto solo devolverá 554:

var value = parseFloat("554,20")

Esto devolverá 554.20:

var value = parseFloat("554.20")

Así que al final, simplemente puedes usar:

var fValue = parseFloat(document.getElementById("textfield").value.replace(",","."))

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 flotador no redondeará el número: tomará su lugar (el entero más cercano).

Ejemplo extendido para responder a la pregunta de Pedro Ferreira de los comentarios:

Si el campo de texto contiene miles de puntos separadores como en 1.234.567,99 esos podrían eliminarse de antemano con otro replace :

var fValue = parseFloat(document.getElementById("textfield").value.replace(//./g,"").replace(",","."))


Si están destinados a ser valores separados, intente esto:

var values = "554,20".split(",") var v1 = parseFloat(values[0]) var v2 = parseFloat(values[1])

Si están destinados a ser un solo valor (como en francés, donde la mitad se escribe 0,5)

var value = parseFloat("554,20".replace(",", "."));


Si extiendes objeto String como este ...

String.prototype.float = function() { return parseFloat(this.replace('','', ''.'')); }

.. puedes ejecutarlo asi

"554,20".float() > 554.20

trabaja con dot también

"554.20".float() > 554.20 typeof "554,20".float() > "number"


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í es: https://github.com/GuillaumeLeclerc/number-parsing