Foros del Web » Programando para Internet » Javascript »

Resultado de suma con 2 decimales

Estas en el tema de Resultado de suma con 2 decimales en el foro de Javascript en Foros del Web. Hola a todos estoy realizando la suma de varios checkbox, el resultado se me presenta con varios decimales, y lo que quiero hacer es que ...
  #1 (permalink)  
Antiguo 27/08/2010, 16:39
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 13 años, 9 meses
Puntos: 1
Resultado de suma con 2 decimales

Hola a todos estoy realizando la suma de varios checkbox, el resultado se me presenta con varios decimales, y lo que quiero hacer es que solo se me presenten como maximo 2 decimales he intentado utilizar toFixed() pero no encuentro en que posición introducir la sentencia, les dejo el script espero me puedan ayudar.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<script>
var total=0;
function operaciones(bol, valor) {
if (bol) {
total += valor;
} else {
total-=valor;
}
var entero = '';
Entero_Decimal = total.toString().split('.');
cadena = Entero_Decimal[0].split('').reverse().join('');
for (var z = cadena.length; z >=0; z--) {
numero = cadena.charAt(z)
if ((cadena.length >= 4 && z ==3 ) || (cadena.length >= 7 && z ==6 ) || (cadena.length >= 10 && z == 9 ) || (cadena.length >= 13 && z ==12 ) || (cadena.length >= 16 && z ==15 )) {
numero += ",";
}
entero += numero;
}
if(Entero_Decimal[1]) {decimales = '.'+ Entero_Decimal[1];}else{decimales='';}
document.formulario.total.value=entero + decimales;
}

function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>.:: Serie 1 3 puertas 120::.</title>
<style type="text/css">
<!--
.subtitulo {font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color: #333;
}
.texto {font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
.titulo { font-family: Arial, Helvetica, sans-serif;
font-size: 15px;
font-weight: bold;
color: #FFF;
}
-->
</style>
</head>

<body>
<br />
<form name=formulario>
<table width="464" border="0" cellpadding="0" cellspacing="8">
<tr>
<td width="123" class="texto">&nbsp;</td>
<td width="160" class="texto">Precio</td>
<td width="149">&nbsp;</td>
</tr>
<tr>
<td class="subtitulo" style="font-size: 13px">&nbsp;</td>
<td class="subtitulo" style="font-size: 13px">$ 2,665.25</td>
<td><input name="checkbox2" type="checkbox" onclick="operaciones(this.checked,2665.25)" value="checkbox" /></td>
</tr>
<tr>
<td class="subtitulo" style="font-size: 13px">&nbsp;</td>
<td class="subtitulo" style="font-size: 13px"> $ 2,112.65</td>
<td><input name="checkbox" type="checkbox" onclick="operaciones(this.checked,2112.65)" value="checkbox" /></td>
</tr>
<tr>
<td class="subtitulo" style="font-size: 13px">&nbsp;</td>
<td class="subtitulo" style="font-size: 13px">$ 1,222.12</td>
<td><input name="checkbox3" type="checkbox" onclick="operaciones(this.checked,1222.12)" value="checkbox" /></td>
</tr>
<tr>
<td class="subtitulo" style="font-size: 13px">&nbsp;</td>
<td class="subtitulo" style="font-size: 13px">$ 5,541.91</td>
<td><input name="checkbox4" type="checkbox" onclick="operaciones(this.checked,5541.91)" value="checkbox" /></td>
</tr>
<tr>
<td class="subtitulo" style="font-size: 13px">&nbsp;</td>
<td class="subtitulo" style="font-size: 13px">$ 4,108.45</td>
<td><input name="checkbox5" type="checkbox" onclick="operaciones(this.checked,4108.45)" value="checkbox" /></td>
</tr>
<tr>
<td height="29" align="right" class="texto"><span class="subtitulo">Total:</span></td>
<td class="texto"><span class="subtitulo"> $

<input name="total" type="text" class="subtitulo" value="0.00" size="5" maxlength="2" />
</span></td>
<td>&nbsp;</td>
</tr>
</table>
<p>&nbsp;</p>
</form>
</body>
</html>

de antemano gracias por toda la ayuda que me puedan brindar.
  #2 (permalink)  
Antiguo 27/08/2010, 16:56
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Resultado de suma con 2 decimales

Hola

Ese código solo genera 2 decimales. Lo se por dos razones
  • Yo lo monté
  • El valor de los input solo tiene dos decimales

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 27/08/2010, 17:03
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Resultado de suma con 2 decimales

Hola Adler,

sep de hecho tu me lo pasaste, he intentado que el valor que arroja en la caja de texto solo salgan 2 decimales, mira si selecciono las cajas de abajo hacia arriba el resultado sale correctamente, pero si selecciono todos de arriba hacia abajo el resultado es con varios decimales, podrias echarle una revisada. gracias de ante mano.
  #4 (permalink)  
Antiguo 28/08/2010, 07:03
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Resultado de suma con 2 decimales

Hola

Tienes toda la razón y es extraño puesto que 2,3 checkbox no ocurre. Prueba así
Código Javascript:
Ver original
  1. var total = 0;
  2. function operaciones(bol, valor) {
  3. if (bol) {
  4. total = (parseFloat(total) + parseFloat(valor)).toFixed(2);
  5. } else {
  6. total = (parseFloat(total) - parseFloat(valor)).toFixed(2);
  7. }
  8.  
  9. var entero = '';
  10.  
  11. Entero_Decimal = total.toString().split('.');
  12.  
  13. cadena = Entero_Decimal[0].split('').reverse().join('');
  14.  
  15. for (var z = cadena.length; z >=0; z--) {
  16. numero = cadena.charAt(z)
  17. entero += numero;
  18. if ((cadena.length >= 4 && z ==3 ) || (cadena.length >= 7 && z ==6 ) || (cadena.length >= 10 && z == 9 ) || (cadena.length >= 13 && z ==12 ) || (cadena.length >= 16 && z ==15 )) {
  19. entero +=  ".";
  20. }
  21. }
  22.  
  23. if(Entero_Decimal[1]) {decimales = ','+ Entero_Decimal[1];}else{decimales='';}
  24.  
  25. document.formulario.total.value=entero + decimales;
  26.  
  27. }
Siento haberte puesto en duda

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 30/08/2010, 12:47
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Resultado de suma con 2 decimales

Muchas gracias por la ayuda funciona excelentemente.

Etiquetas: suma, resultados
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 09:05.