¿Cómo convertir una cadena en flotante en JavaScript?

Resuelto asked hace 15 años • 9 respuestas

Estoy intentando 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 probado parseInty parseFloat. ¿Cómo puedo hacer esto?

 avatar Mar 13 '09 20:03
Aceptado

Si deben ser valores separados, intente esto:

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

Si deben ser un valor único (como en francés, donde la mitad se escribe 0,5)

var value = parseFloat("554,20".replace(",", "."));
Jesse Rusak avatar Mar 13 '2009 13:03 Jesse Rusak

¿Alguna vez has intentado hacer esto? :pag

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

+(string) convertirá la cadena en flotante.

¡Práctico!

Entonces, para resolver tu problema, puedes hacer algo como esto:

var floatValue = +(str.replace(/,/,'.'));
Stev avatar Apr 14 '2011 09:04 Stev

Reemplace la coma con un punto.

Esto sólo devolverá 554:

var value = parseFloat("554,20")

Esto devolverá 554,20:

var value = parseFloat("554.20")

Entonces, al final, simplemente puedes usar:

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

No olvide que parseInt()solo debe usarse para analizar números 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 (entero inferior 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 esos 1.234.567,99se podría eliminar previamente con otro replace:

var fValue = parseFloat(document.getElementById("textfield").value.replace(/\./g,"").replace(",","."))
Wadih M. avatar Mar 13 '2009 13:03 Wadih M.