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

Sí, verás:

En mi primer script, que lo hace todo el solito, no es complementario al de karlankas:
Código PHP:
var nos=["4.532,234","55,56002","541.867,078"];

function 
formato_PC(n) {
    return 
Numbern.replace(/./g,"").replace(/,/g,".") );
}
function 
formato_HUM(n) {
    
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.");        
    
//ver comentario abajo
    
n[0]=n[0].split("").reverse().join("");        //lo reestablecemos a su orden original
    
return n.join(",");        //unimos la parte entera con la decimal
}

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

document.writesuma(nos) ); 
que es igual al último sólo que sin ahorrar código, utilizo lo que tú has posteado:
vfactura = vfact.replace(/\./g,'');
vfacturado = vfactura.replace(/\,/g,'.');
pero en una sola línea:
Number( n.replace(/./g,"").replace(/,/g,".") );

La función formato_PC transforma un número ##.###.###,## en ########.##, formato en el cual javascript puede operar. Además devuelve ya transformado en el tipo Number, con lo cual ninguna restricción.

La función formato_HUM transforma un número de formato_PC ########.## a formato "humano", es decir, al original ##.###.###,##

La función suma no sé si te interesa, es para sumar todos los números del array si están en formato_PC, no tiene mayor complicación.


Si deseas que funcione al revés (es decir, no ##.###,## sino ##,###.##) únicamente deberás cambiar estas líneas en formato_hum:
Código PHP:
n[0]=n[0].replace(/(d{3})(?=d)/g,"$1."); 
por
Código PHP:
n[0]=n[0].replace(/(d{3})(?=d)/g,"$1,");       //lo mismo pero con , después de $1 
y la línea que une a los grupos de entero y decimal, ésta:
Código PHP:
return n.join(","); 
por
Código PHP:
return n.join("."); 
Luego podrías mejor currarte unos argumentos para formato_hum para andarte con menos complicaciones ¿no?


Si no entiendes alguna expresion regular y estás interesado y no puedes encontrar información vuelve a preguntar sin problemas.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.