![]() |
在這個頁面顯示本主題全部的 10 個文章 |
奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- 字串符轉換 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=5212)
字串符轉換
想要求 收盤價的每一個值
例如 收盤價是51.26
c1:...=6
c2:...=2
c3:...=1
c4:...=5
試寫公式如下
cs:FRACPART(C)*100,precision0,linethick;//小數化整 也試過不用取小數值 而直接求值
c1:strtonum(strright(numtostr(Cs,0),1)),linethick;//小數右邊第一位數值
c2:strtonum(strleft(numtostr(Cs,0),1)),linethick;////小數左邊第一位數值
vertline(c1<ref(C1,1));//測試用
vertline(c1>ref(C1,1));//測試用
vertline(c2<ref(C2,1));//測試用
vertline(c2>ref(C2,1));//測試用
cz:INTPART(C),precision0,linethick;//取整數部分
c3:strtonum(strright(numtostr(Cz,0),1)),linethick;//整數右邊第一位值
vertline(c3<ref(C3,1));//測試用
vertline(c3>ref(C3,1));//測試用
partline(C,0),linedot;
搞不懂 為何出來的數值全部都是固定的值(全部都是最後一根K線的值) 不會因為K線位置的變動而改變
然而由圖中(TW2353)可以清楚的看到 值應該是有變化的
煩請指導
__________________
至誠能勝天下至偽
至拙能勝天下至巧
numtostr 是不支援數列的喔
可用下列方式處理:
CC:=c;
C1:INTPART(mod(CC,1000)/100);
C2:INTPART(mod(CC,100)/10);
C3:INTPART(mod(CC,10));
C4:INTPART(mod(CC*10,10));
C5:INTPART(mod(CC*100,10));
多謝版大的指導 我試試
__________________
至誠能勝天下至偽
至拙能勝天下至巧
還是有問題耶
出來的值有些時候正確 有些時後不正確
請觀看個股 然後比對每一個收盤價 例如最近的20根K線 似乎取整的時候系統會自動四捨五入 導致不正常 例如TW1110東泥 日期5/11和 5/9值就是錯誤的
公式如下
CC:=c;
C1:INTPART(mod(CC,100000)/10000),linethick;//整數萬
c2:INTPART(mod(CC,10000)/1000),linethick;//整數千
C3:INTPART(mod(CC,1000)/100),linethick;//整數百
C4:INTPART(mod(CC,100)/10),linethick;//整數十
C5:INTPART(mod(CC,10)),linethick;//整數個位
C6:INTPART(mod(CC*10,10)),linethick;
C7:INTPART(mod(CC*100,10)),linethick;
C8:INTPART(mod(CC*1000,10)),linethick;
__________________
至誠能勝天下至偽
至拙能勝天下至巧
mod(c,10) 和 mod(7.94,10) 目前公式系統處理方式不同
前者有四捨五入後者沒有
已告知研發部修正成均不四捨五入
近期會發佈修正
修正前可採用下列方式處理:
CC:=c+0.005;
MM1:INTPART((cc-10000*INTPART(cc/10000))/1000);
MM2:INTPART((cc-1000*INTPART(cc/1000))/100);
MM3:INTPART((cc-100*INTPART(cc/100))/10);
MM4:INTPART(cc-10*INTPART(cc/10));
MM5:INTPART(cc*10-10*INTPART(cc*10/10));
MM6:INTPART(cc*100-10*INTPART(cc*100/10));
INTPART(cc*100);
因為奇狐預設是顯示到小數第二位
故需加入 CC:=c+0.005; 來處理
若您顯示的是到第三位
則需加入 CC:=c+0.0005; 來處理
其它依此類推
我是這麼解的
CC:C*10000,linethick;
C1:mod(CC,10),linethick;//以下小數千位
c2A:=mod(CC,100);//小數兩位
C2:INTPART(MOD(c2A-C1,100)/10),linethick;//小數百位
.... 餘類推
__________________
至誠能勝天下至偽
至拙能勝天下至巧
不知是否bug
下式係lillian2005 兄提出來的另解方式
CC:C,linethick,precision4;
cs:cc*10000,precision0,linethick0;
ss:strlen(numtostr(Cs[SYSPARAM(1)],0)),linethick0,colorwhite;
s4:strtonum(strmid(numtostr(Cs[SYSPARAM(1)],0),ss-3,1)),linethick;//小數個位
s3:strtonum(strmid(numtostr(Cs[SYSPARAM(1)],0),ss-2,1)),linethick;//小數十位
s2:strtonum(strmid(numtostr(Cs[SYSPARAM(1)],0),ss-1,1)),linethick;//小數百位
s1:strtonum(strright(numtostr(Cs[SYSPARAM(1)],0),1)),linethick;//小數千位
z1:strtonum(strmid(numtostr(Cs[SYSPARAM(1)],0),ss-4,1)),linethick;//整數個位
//以下是我添加的部分
z2:strtonum(strmid(numtostr(Cs[SYSPARAM(1)],0),ss-5,1)),linethick;//整數十位
z3:strtonum(strmid(numtostr(Cs[SYSPARAM(1)],0),ss-6,1)),linethick;//整數百位
請比對TW1110東泥
您會發覺東泥的整數只有一位數值 然而卻多出了兩位數值z2以及z3
並且z2和z3這多出來的值都沿用前一個數值z1
不知是我作業錯誤 還是 這是一個bug
__________________
至誠能勝天下至偽
至拙能勝天下至巧
這不是bug,是用在整數部分時,不能如此行之,看看整個字串長度只有5,怎堪得再減去5或6呢?
整個字串長度只有5 怎堪得再減去5或6
只是在想一個問題
系統為何不將多出來的字串長度預設為零 而一定要預設為目前的狀態
__________________
至誠能勝天下至偽
至拙能勝天下至巧
全部時間均為台灣時間, 現在時間為08:50 | 在這個頁面顯示本主題全部的 10 個文章 |
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved.