JSL 功能还是错误?我有一个函数,它依赖于了解较大字符串的子字符串是否代表数字,我只需使用 Num() 命令的结果 - 如果它返回缺失值,我假设该子字符串不代表数字。
然而,一位用户指出了一个错误,其根本原因是 Num() 命令对前面带有文字“R”的任何数字都非常满意。
有人知道这是一个功能还是错误吗?我尝试查看脚本索引,但无法想到合适的查询。
谢谢!
Print( Num( "R404" ) );
Print( Num( "R123.456" ) );
Print( Num( "r99" ) );
/*
404
123.456
.
*/
自动化和脚本编写回复:JSL 功能还是错误?@奥黛丽_舒尔
我在将列导入为字符时遇到问题。
我肉眼看不到任何非数字的东西。
但当将其设为数字时,大多数值都消失了。 (使用 JMP 16.2 Pro)
但使用 JMP 17EA,我可以直接从字符转换为数字,而不会导致值消失。
所以那里取得了一些进展。
希望有帮助!
本
回复:JSL 功能还是错误?大家好。 看起来 JMP 17 时间范围内已经针对此问题完成了一些工作。 具体来说,Num() 和 Informat() 中添加了一个附加参数,以帮助您控制有效数字。 任何 JMP 17 EA7(或更高版本)用户现在都可以尝试此操作;其他人则需要等到 JMP 17 于 2022 年秋季推出。 感谢您报告此事! 我们确实会监控这些论坛,并希望尽可能修复此类问题。
回复:JSL 功能还是错误?我向 JMP 的文档和开发团队发送了一条说明。 谢谢!
回复:JSL 功能还是错误?货币似乎确实有可能,但我无法真正判断这是否是一个功能,如果是的话,它肯定需要在几个不同的地方提供更好的文档。如果您已经知道这个数字是多少应该看起来虽然你最好为该数据编写自己的验证函数,但我发现这可以防止像“1/1”这样的事情被解释为 1 月 1 日。 当然,如果您正在处理多种语言,这会变得更加困难。
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")
);回复:JSL 功能还是错误?我意识到有很多情况需要注意——但具体来说我只需要关心标准字符,“R”是这里唯一的例子。在任何其他编程语言中,这都会被详细记录或视为错误(文档中未明确列出的任何行为都是错误),但 JMP 不处于该级别的文档,因此它可能只是一个隐藏功能。
回复:JSL 功能还是错误?货币,也许吧。 很多奇怪的情况需要注意...
数字(“5 美元”)
5
num("2000 年 1 月 1 日")
3029529600
数(“5%”)
0.05
asdate(数字(“1/1”))
2001年1月1日