Javascript: ¿por qué esto produce una cadena fea? Me gustaria moneda
-
06-07-2019 - |
Pregunta
var total = 0;
$(".amount").each(function() {
var value = $(this).val();
value = (value.length < 1) ? 0 : value;
var tmp = parseFloat(value).toFixed(2);
total += tmp;
});
$(".total").text(total);
Estoy intentando recorrer algunos cuadros de texto y resumir sus valores. Esto produce una cadena desagradable. ¿¿Qué me estoy perdiendo?? si pongo 8 en el primer cuadro de texto, el texto total termina como " 08.000.000.000.00 " ;. ¿Qué estoy haciendo mal? Me gustaría formatear como moneda, pero si no, al menos solo un número de dos decimales. ¿Algún indicador?
Gracias ~ ck en San Diego
Solución
.toFixed convierte el objeto de un Número en una Cadena.
Deje los valores completos en su lugar y solo convierta usando .toFixed al final
$(".total").text(total.toFixed(2));
Alternativamente, convierta la cadena de nuevo a un número.
total = total + + tmp;
Otros consejos
Solo para su información, hay un excelente complemento de agregación matemática para jQuery: jQuery Calculation
El uso de ese complemento también puede resolver indirectamente su problema.
Su uso reduciría su script a:
$('.total').text($('.amount').sum());
Está convirtiendo el parseFloat en una cadena y luego lo agrega al total. Solo agregue .toFixed (2) a la línea final, una vez que se hayan agregado las cosas.
var total = 0;
$(".amount").each(function() {
var value = $(this).val();
value = (value.length < 1) ? 0 : value;
var tmp = parseFloat(value);
total += tmp;
});
$(".total").text(total).toFixed(2);