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,我可以直接從字符轉換為數字,而不會消失值。
所以那裡取得了一些進展。
希望有幫助!
本