以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  如何规范变量小数位格式  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=13584)

--  作者:sunset0920
--  发布时间:2012/8/10 10:15:19
--  MACD

Set Data1 = MarketData.GetHistoryData("IF08","ZJ",0)
    CP1  = Data1.Close(Data1.Count-1)
    Application.MsgOut cp1
Set Data2 = MarketData.GetHistoryData("IF09","ZJ",0)
    CP2  = Data2.Close(Data2.Count-1)
    application.MsgOut CP2
    Spread=CP2  - CP1

 

结果:

2417
2428.8
11.80005

每次运行,spread都有5位小数。实际上,应该为1位,如11.8。 如何才能使数据保留一位小数?即是,如何规范变量数位格式?


--  作者:guotx2010
--  发布时间:2012/8/10 10:32:07
--  

使用round函数,取1位小数就行了。如:round(cp2-cp1,1)

 


--  作者:sunset0920
--  发布时间:2012/8/10 11:09:22
--  

我曾尝试过,但仍带有小数,原以为round函数在vba不可用呢。

for i =  N to  1 step -1
Set HD1 = MarketData.GetHistoryData("IF08","ZJ",0)
    CP1i = HD1.Close(HD1.Count-i)
    Application.MsgOut cp1i
Set HD2 = MarketData.GetHistoryData("IF09","ZJ",0)
    CP2i = HD2.Close(HD2.Count-i)
    application.MsgOut CP2i
    Spreadi=CP2i -CP1i

call  round (Spreadi)
   application.MsgOut Spreadi

 

 

结果:

 2415.4
2427
11.6001
2414.8
2427.2
12.3999
2414.8
2426.4
11.59985
2413.2
2425
11.80005
2414
2425.8
11.80005

 

--  作者:guotx2010
--  发布时间:2012/8/10 11:34:13
--  
round (Spreadi)
后面没有设置小数位数,改为round(spreadi,1)
--  作者:sunset0920
--  发布时间:2012/8/10 12:11:25
--  
应该得加个语句 ti=round (Spreadi,1)
    
    Spreadi=CP2i -CP1i
    ti=round (Spreadi,1)
   
   application.MsgOut ti
 
谢谢您 终于解决了
虽然准备了1个多月,但当开始尝试着编写时,发现有很多细节有多难。
 
在此特别感谢你们指导
 

--  作者:guotx2010
--  发布时间:2012/8/10 15:09:02
--  

困难是每一个开发人员都必须经历的,磨难之后就会轻松很多了。