Ver Mensaje Individual
  #13 (permalink)  
Antiguo 18/01/2007, 17:44
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 4 meses
Puntos: 45
Re: :si: el punto forma parte del numero:'(

De nada.

Pero creo que te has complicado un pelín sin necesidad.

La funcion formato_PC no hay que modificarla porque transformar a formato PC es siempre la misma operación, no depende de cómo prefiera el usuario la salida.

La unica función que debes modificar es formato_HUM (y todas las que la llaman). Y tampoco hacen falta tantos condicionales que ensucien tanto el código, basta con sustituir allá donde tratemos los decimales con sepDec y hallá donde tratemos los miles con sepMil.

Además si lo haces con condicionales no podremos poner lo que queramos en sepDec y en sepMil, serán puntos o comas (la verdad es que no entiendo muy bien lo que has hecho ahí).

El ejemplo práctico:

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<
html>
<
head>
<
title> New Document </title>
</
head>

<
body>

N1 <input type="text" id="caja1" size="30" value="4.532,234" /><br />
N2 <input type="text" id="caja2" size="30" value="55,56002" /><br />
N3 <input type="text" id="caja3" size="30" value="541.867,078" /><br />
N4 <input type="text" id="caja4" size="30" value="58.795,65247" /><br />
<
input type="button" value="Resultado: " onclick="sumaTodos('.','\'',2)" /> <input type="text" id="resultado" size="30">

<
script>


function 
formato_PC(n) {
    return 
Numbern.replace(/./g,"").replace(/,/g,".") );
}
function 
formato_HUM(nsepMilsepDecdecimales) {
    
n=n.toFixed(decimales);            // los decimales que queramos
    
n=String(n).split(".");        //el entero es n[0] y la parte decimal es n[1]
    
n[0]=n[0].split("").reverse().join("");        //le damos la vuelta, asi podemos tocarlo desde atras sin complicaciones
    
n[0]=n[0].replace(/(d{3})(?=d)/g,"$1"+sepMil);     //tratamos los miles
    
n[0]=n[0].split("").reverse().join("");        //lo reestablecemos a su orden original
    
return n.join(sepDec);        //unimos la parte entera con la decimal (tratamos los decimales)
}

function 
suma(arrsepMilsepDecdecimales) {
    var 
total=0;
    for(var 
i=0;i<arr.length;i++)
        
total+=formato_PC(arr[i]);
    return 
formato_HUM(totalsepMilsepDecdecimales);


function 
sumaTodos(sepMilsepDecdecimales) {
    var 
arr=new Array();
    for(var 
a=1a<=4a++) {
        
arr[arr.length]=document.getElementById("caja"+a).value;
    }
    
document.getElementById("resultado").value=suma(arrsepMilsepDecdecimales);
}

</script>


</body>
</html> 

Recuerda las contrabarras en las expresiones regulares.

La palabra debugger que hay después del { de formato_HUM tampoco la entiendo...


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.