![]() |
在這個頁面顯示本主題全部的 7 個文章 |
奇狐社區論壇 (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=4283)
金當月的問題
偶而在寫一個公式時發現在金當月(FITF1)中有一個不可解的事情,就是他的數據對應似乎有問題,例如用下面這個簡單的式子測試一下
vertline(H=908.00 and L=891.40);
竟然有許多無法正確找到對應點,有對的,有找不到的,也有找到天南地北去的,像 (904.40,900.00) (908.00,891.40) (860.20,848.00) 就找不到,而 (865.00846.00) (913.00906.00) (889.00878.40) 就找得到,我不知道這只是我個人的問題,還是奇狐的問題,提出來請教一下,請測試測試
註: 在其他期貨股票都沒有這個問題存在
以此為例 vertline(H=908.00 and L=891.40);
加上下兩行
HH:H PRECISION6;
LL:L PRECISION6;
你會發覺 908.00 是 908.000061 而 891.40 是 891.400085
這是因為電腦運算精度的問題(單精度)
所以用此種判斷方式容易出錯
因為 908.00 <> 908.000061
要避開電腦計算精度的問題可用
vertline(INTPART(H*100)=90800 and INTPART(L*100)=89140);
這個方法是可以解目前的問題,可是就其他許多要用到相等的式子時,是不是也會遇到同樣的問題?總不能每一個公式都加intpart吧
難道不能系統內的數值就定位在小數點以下固定位數嗎?(其實在系統管理中早已訂為小數點以下兩位,還是有上述的問題發生)
要不然就是圖面上能顯出正確的電腦數值...這樣子也不用每次輸入一個查詢值時都要加兩個0
系統管理 指標數值顯示小數2位
是針對顯示小數位
很抱歉
系統是不能設計成 計算結果為固定小位數的
因為這無法通用於每種公式的需求
有些公式數值可能介於 0∼100
有些公式數值可能介於 0∼1
將計算結果固定小位數儲存
可能會導致某些公式計算上累計誤差會很大
例如
0.856+0.724+0.623+0.164+0.534....
用兩位和用三位算誤差會很多
一般的程式語言系統
也不會採這樣的設計
通常都以目前的計算精度處理完
再取要顯示的小位數
建議您改用參數來帶入, 使用上較方便
例如: vertline(INTPART(H*100)=N1 and INTPART(L*100)=N2);
引用:
最初由 cgjj 發表
建議您改用參數來帶入, 使用上較方便
例如: vertline(INTPART(H*100)=N1 and INTPART(L*100)=N2); [/B]
這樣就可以囉
這就對了,謝謝總版主指導
全部時間均為台灣時間, 現在時間為18:44 | 在這個頁面顯示本主題全部的 7 個文章 |
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved.