¿Característica o error de JSL?Tengo una función que se basa en saber si una subcadena de una cadena más grande representa un número o no, y simplemente uso el resultado del comando Num(); si devuelve un valor faltante, supongo que la subcadena no representa un número. .
Sin embargo, un usuario señaló un error que tenía como causa raíz el hecho de que el comando Num() es perfectamente compatible con cualquier número precedido por la "R" literal.
¿Alguien sabe de esto como una característica o un error?Intenté buscar en el índice de secuencias de comandos, pero no puedo pensar en una consulta bien planteada para esto.
¡Gracias!
Print( Num( "R404" ) );
Print( Num( "R123.456" ) );
Print( Num( "r99" ) );
/*
404
123.456
.
*/
secuencias de comandosRe: ¿Característica o error de JSL?Moneda, tal vez. Un montón de casos extraños a tener en cuenta...
número("$5")
5
núm("1ene2000")
3029529600
número ("5%")
0.05
comofecha(num("1/1"))
01 de enero de 2001
Re: ¿Característica o error de JSL?Me doy cuenta de que hay muchos casos a tener en cuenta, pero específicamente solo necesito preocuparme por los caracteres estándar y "R" es el único ejemplo aquí.En cualquier otro lenguaje de programación, esto estaría bien documentado o se consideraría un error (cualquier comportamiento que no esté enumerado explícitamente en la documentación es un error), pero JMP no está en ese nivel de documentación, por lo que probablemente sea solo una función oculta.
Re: ¿Característica o error de JSL?La moneda parece probable, pero realmente no puedo decir si esta es una característica, si lo es, ciertamente necesita una mejor documentación en varios lugares diferentes.Si ya tienes una idea de lo que es el número deberían parece que sería mejor escribir su propia función de validación para esos datos, creo que evita que cosas como '1/1' se interpreten como el 1 de enero. Por supuesto, esto se vuelve más difícil si se trata de varios idiomas.
num_validated = function({v}, {r=.},
if( //Make sure anything with odd characters is missing
is missing(regex(v,"^[0-9\.\,]+$")),
r = .,
//try to interpret everything else using 'num':
r = num( v );
);
r;
);
show(
num_validated("1"),
num_validated("1.0"),
num_validated("R1"),
num_validated("1,000")
);Re: ¿Característica o error de JSL?Envié una nota a los equipos de desarrollo y documentación de JMP. ¡Gracias!
Re: ¿Característica o error de JSL?Saludos a todos. Parece que se ha hecho algo de trabajo para este problema en el marco de tiempo de JMP 17. Específicamente, se agregó un argumento adicional a Num() e Informat() para ayudarlo a controlar lo que se considera un número válido. Cualquier usuario de JMP 17 EA7 (o posterior) puede probar esto ahora; otros deberán esperar hasta que JMP 17 esté disponible en el otoño de 2022. ¡Gracias por informar esto! Monitoreamos estos foros y buscamos arreglar cosas como esta cuando sea posible.
Re: ¿Característica o error de JSL?@Audrey_Shull
Estaba teniendo un problema con una columna importada como personaje.
No podía ver nada que no fuera numérico a simple vista.
Pero al convertirlo en un número, la mayoría de los valores desaparecieron. (con JMP 16.2 Pro)
Pero usando JMP 17EA pude transformar inmediatamente de carácter a numérico sin que los valores desaparecieran.
Así que hubo algún progreso allí.
¡Espero que ayude!
ben