Fonctionnalité ou bogue JSL ?J'ai une fonction qui repose sur le fait de savoir si une sous-chaîne d'une chaîne plus grande représente un nombre ou non, et j'utilise simplement le résultat de la commande Num() - si elle renvoie une valeur manquante, je suppose que la sous-chaîne ne représente pas un nombre .
Cependant, un utilisateur a signalé un bogue qui avait pour cause première le fait que la commande Num() est parfaitement satisfaite de tout nombre précédé du "R" littéral.
Est-ce que quelqu'un est au courant de cela en tant que fonctionnalité ou bogue?J'ai essayé de regarder dans l'index de script mais je ne peux pas penser à une requête bien posée pour cela.
Merci!
Print( Num( "R404" ) );
Print( Num( "R123.456" ) );
Print( Num( "r99" ) );
/*
404
123.456
.
*/
ScriptRe : fonctionnalité JSL ou bogue ?Monnaie, peut-être. Beaucoup de cas étranges à surveiller...
nombre("$5")
5
num("1jan2000")
3029529600
nombre("5%")
0,05
date(num("1/1"))
01janvier2001
Re : fonctionnalité JSL ou bogue ?Je me rends compte qu'il y a de nombreux cas à surveiller - mais je n'ai plus qu'à me soucier des caractères standard et "R" est le seul exemple ici.Dans tout autre langage de programmation, cela serait bien documenté ou considéré comme un bogue (tout comportement qui n'est pas explicitement répertorié dans la documentation est un bogue), mais JMP n'est pas à ce niveau de documentation, donc c'est probablement juste une fonctionnalité cachée.
Re : fonctionnalité JSL ou bogue ?La monnaie semble probable, mais je ne peux pas vraiment dire s'il s'agit d'une fonctionnalité, si c'est le cas, elle a certainement besoin d'une meilleure documentation à plusieurs endroits différents.Si vous avez déjà une idée du nombre devrait il semble que vous feriez mieux d'écrire votre propre fonction de validation pour ces données, je trouve que cela empêche des choses comme '1/1' d'être interprétées comme le 1er janvier. Bien sûr, cela devient plus difficile si vous avez affaire à plusieurs langues.
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 : fonctionnalité JSL ou bogue ?J'ai envoyé une note aux équipes de documentation et de développement de JMP. Merci!
Re : fonctionnalité JSL ou bogue ?Salutations à tous. Il semble que du travail ait été fait pour ce problème dans la période JMP 17. Plus précisément, un argument supplémentaire a été ajouté à Num() et Informat() pour vous aider à contrôler ce qui est considéré comme un nombre valide. Tous les utilisateurs de JMP 17 EA7 (ou version ultérieure) peuvent l'essayer dès maintenant ; d'autres devront attendre que JMP 17 soit disponible à l'automne 2022. Merci d'avoir signalé cela ! Nous surveillons ces forums et cherchons à résoudre ce genre de problèmes lorsque cela est possible.
Re : fonctionnalité JSL ou bogue ?@Audrey_Shul
J'avais un problème avec une colonne importée en tant que personnage.
Je ne pouvais rien voir qui ne soit pas numérique à l'œil nu.
Mais en en faisant un numérique, la plupart des valeurs ont disparu. (avec JMP 16.2 Pro)
Mais en utilisant JMP 17EA, je pouvais immédiatement transformer un caractère en numérique sans que les valeurs ne disparaissent.
Il y a donc eu des progrès.
J'espère que cela pourra aider!
Ben