sirve - Javascript Parse Float está ignorando los decimales después de mi coma
parsefloat 2 (7)
¿Por qué no usar globalizar? Este es solo uno de los problemas a los que puede acceder cuando no usa el idioma inglés:
Globalize.parseFloat(''0,04''); // 0.04
Algunos enlaces en stackoverflow para ver:
Aquí hay un escenario simple. Quiero mostrar la resta de dos valores que se muestran en mi sitio:
//Value on my websites HTML is: "75,00"
var fullcost = parseFloat($("#fullcost").text());
//Value on my websites HTML is: "0,03"
var auctioncost = parseFloat($("#auctioncost").text());
alert(fullcost); //Outputs: 75
alert(auctioncost); //Ouputs: 0
¿Alguien puede decirme lo que estoy haciendo mal?
Como señaló @JaredPar en su respuesta, use parseFloat
con replace
var fullcost = parseFloat($("#fullcost").text().replace('','', ''.''));
Tan solo reemplazar la comma
con un dot
lo arreglará, a menos que sea un número superior a miles como 1.000.000,00
esta manera le dará el dígito equivocado. Entonces necesitas reemplazar la comma
quitar los dots
.
// Remove all dot''s. Replace the comma.
var fullcost = parseFloat($("#fullcost").text().replace(//./g,'''').replace('','', ''.''));
Al usar dos reemplazos, podrá tratar los datos sin recibir dígitos incorrectos en la salida.
Es mejor usar esta sintaxis para reemplazar todas las comas en un caso de un millón 1,234,567
var string = "1,234,567";
string = string.replace(/[^/d/./-]/g, "");
var number = parseFloat(string);
console.log(number)
El g
significa eliminar todas las comas.
Compruebe la demostración de Jsfiddle aquí .
Esto es "Por diseño". La función parseFloat
solo considerará las partes de la cadena hasta que llegue a un non +, -, número, exponente o punto decimal. Una vez que ve la coma, deja de buscar y solo considera la parte "75".
Para arreglar esto, convierta las comas en puntos decimales.
var fullcost = parseFloat($("#fullcost").text().replace('','', ''.''));
Los números en JS usan a .
(punto / punto) para indicar el punto decimal no a ,
(coma).
parseFloat de javascript no toma un parámetro de configuración regional. Entonces deberás reemplazar ,
con .
parseFloat(''0,04''.replace(/,/, ''.'')); // 0.04
parseFloat
analiza de acuerdo con la definición de JavaScript de un literal decimal , no la definición de su localidad. (Por ejemplo, parseFloat
no es consciente de la configuración regional). parseFloat
decimales en JavaScript .
para el punto decimal