Foros del Web » Programando para Internet » Javascript »

Sumar con decimales

Estas en el tema de Sumar con decimales en el foro de Javascript en Foros del Web. Tengo el siguiente codigo y querria saber en que falla. la suma de productos la hace bien aunque querría que solo tenga dos decimales, y ...
  #1 (permalink)  
Antiguo 14/11/2002, 03:44
Avatar de sedos  
Fecha de Ingreso: junio-2002
Mensajes: 116
Antigüedad: 21 años, 10 meses
Puntos: 0
Sumar con decimales

Tengo el siguiente codigo y querria saber en que falla. la suma de productos la hace bien aunque querría que solo tenga dos decimales, y la suma total no va...

Alguien sabe que puede fallar????



<html>
<head>
<title>hoja de pedido</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<SCRIPT LANGUAGE=javascript>
<!--
function sumar(){
formu.total.value=(parseInt(formu.total12am.value) +parseInt(formu.total12ol.value)
+parseInt(formu.total12ro.value)
);

return;
}

function subprecio12a(){

formu.total12am.value=formu.canpm12am.value*2.10;
formu.totalmoscas.value=parseInt(formu.totalmoscas .value)+parseInt(formu.canpm12am.value);
return;
}
function subprecio12b(){
formu.total12ol.value=formu.canpm12ol.value*2.15;
formu.totalmoscas.value=parseInt(formu.totalmoscas .value)+parseInt(formu.canpm12ol.value);
return;
}
function subprecio12c(){
formu.total12ro.value=formu.canpm12ro.value*2.10;
formu.totalmoscas.value=parseInt(formu.totalmoscas .value)+parseInt(formu.canpm12ro.value);
return;
}
//-->
</SCRIPT>

<body>
<FORM method="post" action="ssss" id=formu name=formu>
<table width="521" border="1" cellpadding="0" cellspacing="1" bordercolor="#333333">
<tr>
<td>PM12AM</td>
<td width="33%">
<input name="canpm12am" value="0" size="5" maxlength="4" onblur="subprecio12a(),sumar()">x 2.10 Euros
</td>
<td width="40%">
<input name="total12am" size="10" value="0" readonly>Euros</div>
</td>
</tr>
<tr>
<td height="30">PM12OL</td>
<td width="33%">
<input name="canpm12ol" size="5" maxlength="4" onblur="subprecio12b(),sumar()" value="0" >x 2.15 Euros
</td>
<td width="40%">
<input name="total12ol" size="10" value="0" readonly>Euros
</td>
</tr>
<tr>
<td>PM12RO</td>
<td width="33%">
<input name="canpm12ro" size="5" maxlength="4" onblur="subprecio12c(),sumar()" value="0">x 2.10 Euros
</td>
<td width="40%">
<input name="total12ro" size="10" value="0" readonly>Euros
</td>
</tr>
<tr>
<td colspan="2">Número de productos:<input name="totalmoscas" size="5" value="0" readonly>
</td>
<td>Total:<input name="total" size="10" readonly value ="0">Euros
</td>
</tr>
<tr>
<td height="30" colspan="3">
<input name="enviar" type="submit" class="boton" value="Enviar Hoja de pedido">
<input name="enviar2" type="reset" class="boton" value="borrar datos">
</td>
</tr>
</table>
</FORM>

</body>
</html>
  #2 (permalink)  
Antiguo 14/11/2002, 05:55
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Hola, echando un vistacillo por encima a tu código, veo porqué no te suma bien la cantidad de productos:

Cada vez que el foco se va de uno de los textbox sumas el contenido de ese textbox al total

formu.totalmoscas.value=parseInt(formu.totalmoscas .value)+parseInt(formu.canpm12am.value);

pero claro, si teníamos en totalmoscas 15, por ejemplo repartidos así:
canpm12am= 3
canpm12ol = 7
canpm12ro= 5

Y cambias canpm12am por 6, lo que hace es sumar a los 15 QUE YA TENÍA otros 6, por lo que en vez de mostrar 18 ( 6+7+5) mostrará 21 (los 15 que ya tenía + los 6 nuevos)

La solución sería, en vez de sumar a totalmoscas el valor del campo, sumar únicamente los tres campos, algo así:

formu.totalmoscas.value=parseInt(formu.canpm12ol.v alue)+parseInt(formu.canpm12am.value)+parseInt(for mu.canpm12ro.value);

Creo que así iría bien la suma de los porductos.

En cuanto a lo de los decimales, ahora mismo no sé, pero supongo que en js habrá (como en otros lenguajes de programación) alguna función para coger sólo los decimales que te interesen (dos por ejemplo).

También he visto que la suma total te la dá sin decimales, por lo que si la suma total es 23.67, sólo pone 23, aquí habría que aplicar el formateo de números, como en los anteriores.

Mira en algún tutorial de js como hacer esto, de todas maneras en cuanto tenga un rato lo miro.

Si no entiendes algo de la explicación (no soy muy bueno en esto de intentar explicar) me preguntas.

Un saludo y espero haberte ayudado.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:33.