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