JSL 功能还是错误?我有一个函数,它依赖于知道较大字符串的子字符串是否代表数字,我只是使用 Num() 命令的结果——如果它返回缺失值,我假设子字符串不代表数字.
然而,一位用户指出了一个错误,其根本原因是 Num() 命令对任何前面有文字“R”的数字都非常满意。
有没有人知道这是一个功能或错误?我尝试查看脚本索引,但想不出一个合适的查询。
谢谢!
Print( Num( "R404" ) );
Print( Num( "R123.456" ) );
Print( Num( "r99" ) );
/*
404
123.456
.
*/
脚本回复:JSL 功能还是错误?货币,也许。 很多奇怪的案例需要注意...
数(“$ 5”)
5
num("1jan2000")
3029529600
数(“5%”)
0.05
asdate(num("1/1"))
2001 年 1 月 1 日
回复:JSL 功能还是错误?我意识到有很多情况需要注意——但具体来说,我只需要关心标准字符,“R”是这里唯一的例子。在任何其他编程语言中,这将被很好地记录或被视为错误(文档中未明确列出的任何行为都是错误),但 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 功能还是错误?我向 JMP 的文档和开发团队发送了一份说明。 谢谢!
回复:JSL 功能还是错误?大家好。 在 JMP 17 时间范围内,似乎已经针对此问题完成了一些工作。 具体来说,在 Num() 和 Informat() 中添加了一个附加参数,以帮助您控制什么是有效数字。 任何 JMP 17 EA7(或更高版本)用户现在都可以试用;其他人则需要等到 JMP 17 于 2022 年秋季推出。 感谢您报告此事! 我们会监控这些论坛,并在可能的情况下寻求解决此类问题。
回复:JSL 功能还是错误?@Audrey_Shull
我在导入为字符的列时遇到问题。
我无法用肉眼看到任何非数字的东西。
但是当它变成数字时,大多数值都消失了。 (使用 JMP 16.2 专业版)
但是使用 JMP 17EA,我可以直接从字符转换为数字,而不会消失值。
所以那里取得了一些进展。
希望有帮助!
本