Javascript: 'number.toLocaleString()' alguien lo ha hecho funcionar


([N1] angelcastillo) #1

Buenas, si el titulo es muy feo. Pero esto me está desesperando.

Estoy intentando simplemente coger un valor numérico de tipo double (que puede ser obtenido de cualquier lado: constante, variable, de una tabla) y mostrarlo con formato local (usando separador de miles y decimales), es decir:
42560.850000 —> 42.560,85

Lo mas parecido y que deberia ser es la función ‘toLocaleString()’ que según he leido en documentación QT sirve para eso, en vDevelop aparece dicha función cuando empiezas a escribirla (aunque en la documentación de Velneo no veo nada) y aunque la pongo en mi codigo y no da ninguntipo de error, esta no hace nada de nada.

La he probado mas de cien veces y de formas distintas y nada.

¿Maneja alguien como convertir a formato local un valor double en javascript?

Gracias.


([N1] angelcastillo) #2

…alguna idea de como obtener el formato local en javascript…


([N1] Roberto Valdés) #3

toLocaleString() funciona bien en ficheros QML, pero en JavaScript no, incluso en algunas versiones de algunos navegadores web.

En Velneo hay una función que hace lo mismo: numberToString que con formato “L” e indicando los decimales, devuelve una cadena con el número en formato local, pero que no puedes usar directamente desde un script.

Para realizar el formateo del número dentro de un script tienes que usar un proceso con dos variables locales: NUM (numérica) y NUM_STR (alfabérica) y una sola línea: Set (NUM_STR, numberToString(NUM,“L”,2))
Para obtener el número formateado, añades al script las siguientes líneas:

importClass(“VProcess”);
var NumeroFormateado = “”;
var FormatoNumero = new VProcess(theRoot);
FormatoNumero.setProcess(“Alias_Proyecto/Id_Proceso”);
FormatoNumero.setVar(“NUM”, 42560.850000);
if (FormatoNumero.exec()){
NumeroFormateado = FormatoNumero.varToString(“NUM_STR”);
}

El valor de la variable NumeroFormateado será 42.560,85

Espero te sirva