Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:自定义函数返回值永远是0

1楼
klc 发表于:2013/4/12 16:16:48

在逐K线的公式中,调用一个自定义函数:

A:=synxh(B);

debugfile('c:\test.txt','%d',A);

A总是输出0

 

但在自定义函数中,用了

synxh=1

application.msgout synxh

则能输出1

2楼
admin 发表于:2013/4/12 16:30:48
你的程序就只有这4句话?
3楼
klc 发表于:2013/4/12 16:36:17

有个

B:=1;

if ISLASTBAR then

begin

  A:=synxh(B);

 debugfile('c:\test.txt','%d',A);

end;

你好,很奇怪,结果text.txt文件中是有输出,但总是0,但

A:synxh(B);

则能从图表中看到,最后一个BAR的A是1

4楼
klc 发表于:2013/4/12 16:48:05
知道了,要用%f输出,返回值是浮点
5楼
klc 发表于:2013/4/12 16:55:18

然后接下来对返回值的判断还必须这样写:

if A=1.0 then....

而如果用

if A=1 then ...就永远不执行

1.0不等于1么?好奇怪

6楼
admin 发表于:2013/4/12 18:24:49
论坛关键字搜索 浮点误差
7楼
klc 发表于:2013/4/14 10:21:25

admin你说的浮点误差问题是任何软件在进行计算后都可能存在的,现在我的问题是简单的赋值算不算计算?

比如:

th:=THOLDING;

if th=1 then

begin

........

end

 

需要写成:

th:=THOLDING;

if round(th)=1 then

begin

........

end

吗?

8楼
klc 发表于:2013/4/14 10:25:25

更极端的情况是:

AA:=1.0;

BB:=AA;

CC:=BB;

DD:=CC;

是不是经过了反复计算?

是不是要写成:

AA:=1.0;

BB:=round(AA);

CC:=round(BB);

DD:=round(CC);

 

 

共8 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.01563 s, 2 queries.