以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  为什么这个 if 语句条件为真也无法执行?  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=82163)

--  作者:icanfly
--  发布时间:2015/8/8 13:50:11
--  为什么这个 if 语句条件为真也无法执行?
我写了一个判断两个变量为符号不同的代码,如下,但不知道为什么不执行。

if (C1*10000)*(C2*10000) < 0 then
begin
//代码1
end
else
begin
//代码2
end

这里的C1、C2之所以要乘以10000,是应为这两个变量值太小,数据为C1=-0.000086、C2=0.000226。

理论上C1、C2只要符号相反,相乘后就小于0啊,也就是条件为真,但结果始终执行的是”代码2“,不知道为何?

--  作者:yukizzc
--  发布时间:2015/8/9 18:25:28
--  

你输出下(C1*10000)*(C2*10000) < 0

这个条件判断的返回值1还是0看下


--  作者:icanfly
--  发布时间:2015/8/9 18:34:14
--  
我就是不清楚是为什么结果为“否”,因为我用常用的编程软件比如C、C++等之类的结果就是为“真”。
--  作者:yukizzc
--  发布时间:2015/8/9 18:36:17
--  
知道理论是真,你输出下这个判断条件看下。就和你c编程一样遇到问题调试输出下中间值看是多少,看看是这个判断语句返回了false还是true而后面的问题
--  作者:icanfly
--  发布时间:2015/8/9 18:50:48
--  
我知道原因了:这个逻辑运算符“<”的优先级居然大于了前面的乘法运算,和C/C++还有点不一样。把之前的运算加上括号就行了。
--  作者:yukizzc
--  发布时间:2015/8/10 10:14:34
--  

不会啊,我这边用这个代码测试没哟问题的,图上也都有开仓信号

 

C1:=-0.000086;
C2:=0.000226;
if (C1*10000)*(C2*10000) < 0 then buy(1,1,marketr)

[此贴子已经被作者于2015/8/10 10:15:04编辑过]