imput mask

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Hola como estan, despues de mucho tiempo retornando a trabajar con el autoplay... y ya tengo una pregunta, que imput mask debo poner para que me marque un imput correctamente los decimales, sino le pongo ningun imput me marca un numero asi de largo $ 1.0828567056281, lo estoy trabajando como si fuera dolar, pero quisiera que solo figure $ 1.08 y si le pongo un imput mask como este #,### me sale bien pero cuando llega a 10 ahi se queda... muchas gracias
Para redondear tus valores y decirle cuantos decimales deben de tener podes usar la función Math.Round

Ejemplo de uso:
Valor =  "2580.44563"
Math.Round(String.ToNumber(Valor), 2)
Esta funcion Math.Round te dice que redondeara a 2 los decimales del valor almacenado en la variable valor

Esta función String.ToNumber convertirá a valor numérico el contenido de la variables valor

el numero 2 es la cantidad de decimales que mostrara


ahora si quieres que tus valores se conviertan en valores moneda puedes usar un plugin currency o una función puro código

te comparto una que yo utilizo es muy buena

en global function colocas esta
function comma_value(n)
	local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$')
	return left..(num:reverse():gsub('(%d%d%d)','%1,'):reverse())..right
end
y la usas de esta manera
Valor = "2580.44563"
Input.SetText("Input1", comma_value(Valor));
y para que ese valor solo tenga 2 decimales podemos combinar la función anterior con esta te pongo el ejemplo:
Valor = Math.Round(String.ToNumber("2580.44563"), 2)
Input.SetText("Input1", comma_value(Valor));

bueno espero te sirva lo que te comparto.
muchas gracias por tu respuesta, lo que pasa que yo queria usar esta formula y me daba el resultado en el imput (que me muestra mal los decimales) te voy a ser sincero no se como adaptarlo pero voy a tratar...

Código: Seleccionar todo

suma=0;
a = Input.GetText("Input1");
b = Input.GetText("Input2");
c = Input.GetText("Input3");
suma = suma+(a*b/c);
Input.SetText("Input4", suma);
y con este incrementa valor

Código: Seleccionar todo

Incrementar = tonumber(Input.GetText("Input1"));
ObtenerValor = tonumber(Input.GetText("Input4"));
Input.SetText("Input1", (ObtenerValor+Incrementar))
en Global Function
function comma_value(n)
	local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$')
	return left..(num:reverse():gsub('(%d%d%d)','%1,'):reverse())..right
end
en el botón que hace el calculo
a = Input.GetText("Input1");
b = Input.GetText("Input2");
c = Input.GetText("Input3");
suma = suma+(a*b)/c;
Input.SetText("Input4",Math.Round(String.ToNumber( suma), 2));
Incrementar = tonumber(Input.GetText("Input1"));
ObtenerValor = tonumber(Input.GetText("Input4"));
Input.SetText("Input1", Math.Round(comma_value((ObtenerValor+Incrementar)), 2))
Me anda perfecto muchas gracias, lo unico molesto es que me tira el cartel este cuando doy al previo...
Imagen

Código: Seleccionar todo

function comma_value(n)
	local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$')
	return left..(num:reverse():gsub('(%d%d%d)','%1,'):reverse())..right
end

a = Input.GetText("Input1");
b = Input.GetText("Input2"); 
c = Input.GetText("Input3");
f = a*b/c;
Input.SetText("Input4",Math.Round(String.ToNumber( f), 3));

Incrementar = tonumber(Input.GetText("Input1"));
ObtenerValor = tonumber(Input.GetText("Input4"));
Input.SetText("Input1", Math.Round(comma_value((ObtenerValor+Incrementar)), 3));
me he dado cuenta que cuando la cuenta llega a 1000... se resetea, porque sera?
solo esto va en global function
function comma_value(n)
	local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$')
	return left..(num:reverse():gsub('(%d%d%d)','%1,'):reverse())..right
end
gracias el error se fue, si es cierto tenia todo el codigo en global fuction...Pero cuando llega a 1000,00 se vuelve a 0.. le debe faltar un signo quizas pero no puedo darme cuenta cual es...
no entiendo a que te refieres cuan llega a 1000,00 se vuelve a 0.. si te podes explicar o poner fotos para entender mejor

Nota: podria influir en algo la configuracion de moneda de tu sistema operativo verifica como esta y si la podes corregir tambien.
Imagen
se que el problema esta con la diferencia entre comas y puntos pero no se como acodarlo
en la foto muestra como cada input me va mostrando, se que en vez de que aprezca el punto tendria que ser una coma pero no se como ponerlo, por eso preguntaba desde el principio si debia usar un imput-mask
seguí las instrucciones para cambiar los puntos y comas de los valores numéricos y de moneda

pasos
  • clic botón inicio
  • bucare cambiar fecha y hora
  • Clic en la opción Fecha, hora y formato regional
  • clic en la opción Opciones adicionales de fecha, hora y configuración regional
  • Clic en configurar la hora y la fecha
  • Clic en cambiar fecha y hora
  • clic en Cambiar configuración del calendario
  • clic en configuración adicional
ya llegaste a lo que importa aquí tenes que cambiar los símbolos correspondientes en la pestaña numero y moneda
  • Símbolo de decimales poner (.)
  • Símbolo de separación de miles poner (,)
  • Separador de listas poner (;)
luego de cambiar eso solo das
  • aplicar y aceptar
  • aplicar y aceptar
  • aceptar
  • aceptar
y listo ya esta tu problema resuelto.
function currencyFormat(text)
  local amount = string.format('%.2f', text);

  local amountFormatted, substitutions = amount, -1;
  while substitutions ~= 0 do
    amountFormatted, substitutions = string.gsub(amountFormatted, '^(-?%d+)(%d%d%d)', '%1,%2');
  end

  return amountFormatted;
end

local myValue = '1978437634.8977438975';
local result = currencyFormat(myValue);
-- result: '1,978,437,634.90'
hola chicos ante todo, muchas gracias por seguir ayudandome..
la configuracion que me decia agotaras.. siguio igual funcionando se reseteaba a 0
el codigo que subio dowsher lo pegue en global function, borrando el anterior, anda bien se ve asi
1051.0100501 ( eso seria 1051) no se si conbinar ambos codigos para que solo aparezca asi 1051.01
no hubo caso hice toda clase de combinaciones y no puedo hacer que aparezca 2 decimales, con lo que subio dowsher... anda muy bien pero me aparece numero largo... el 1000 meaparece asi 1000.000000000000
sube el apz te lo arreglare porque explicas muy mal no se que es lo que decís con que se resetea a 0 mejor comparti el apz y te lo dejo funcionando.
pones permisos para descargar que pasa con vos ocupas ayuda o no.
ahi lo subo de nuevo me debo haber equivocado a poner link


ahi esta
https://drive.google.com/file/d/1UnYEVl ... sp=sharing
ya esta aquí te dejo el apz corregida

Imagen
Imagen

HIDE: ON
Hidebb Message Hidden Description
Mil gracias agotaras quedo espectacular como yo queria... perdon por el tiempo y las vueltas que te hice dar... agradecido saludos