關於陣列的語法問題 NthLowestArray

  •   157 
  • 最後發表   lobogaw  2023 二月 08
lobogaw 發文於   2023/02/04

請教小編大大 :

我使用 陣列存放每一周各股的 股價淨值比.

然後, 以利 NthLowestArray 語法, 以取得陣列裡第 (前)10%的極小值.

例如陣列 size 有 200, 則程式碼就寫成 :

value1 = NthLowestArray(arrA, 200, 20);

 

很奇怪的, 當陣列 size = 200時, 執行結果正常.

但當 size 大於 200時(我試了 210, 220, 230, 300), 執行的結果就等於 0, 也就是在參數宣告時我給的陣列內容初始值.

 

 

在陣列 size > 200時. 只有 NthLowestArray 才會執行錯誤(=0).

取這陣列內容時, 例如 arrA[120], arrA[210], arrA[250] 都可以取得正確的內容.

 

Why ? 好奇怪 !

請幫忙釋疑, 感謝 !

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/02/07

Hello lobogaw,

 

內建函數大多可以直接在XS編輯器裡面確認。

像是 NthLowestArray 的腳本就可以在XS編輯器裡面找到,其中是使用了 NthExtremesArray 這個函數。

接著打開 NthExtremesArray 函數您可以看到裡面的第15行:

if N > Size or Size > MinList(MaxSize+1,200) then

begin 

refExtremeValue = 0;

refExtremeIndex = -1;

NthExtremesarray = -1;

end

這一段的表達排序最大只能使用在陣列大小200以內的陣列上。

 

如果您需要用在更大的陣列上,可以自行撰寫函數腳本即可。

另外,也可以參考 Array_Sort 函數來將陣列排序。

 

  • 按讚來自於
  • lobogaw
lobogaw 發文於   2023/02/08

 原來如此, 感謝 小幫手 !

發表回覆
Close