欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 为什么这个 if 语句条件为真也无法执行?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有1736人关注过本帖树形打印复制链接

主题:为什么这个 if 语句条件为真也无法执行?

帅哥哟,离线,有人找我吗?
icanfly
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:49 积分:90 威望:0 精华:0 注册:2012/4/27 21:27:42
为什么这个 if 语句条件为真也无法执行?  发帖心情 Post By:2015/8/8 13:50:11 [只看该作者]

我写了一个判断两个变量为符号不同的代码,如下,但不知道为什么不执行。

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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2015/8/9 18:25:28 [只看该作者]

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
icanfly
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:49 积分:90 威望:0 精华:0 注册:2012/4/27 21:27:42
  发帖心情 Post By:2015/8/9 18:34:14 [只看该作者]

我就是不清楚是为什么结果为“否”,因为我用常用的编程软件比如C、C++等之类的结果就是为“真”。

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2015/8/9 18:36:17 [只看该作者]

知道理论是真,你输出下这个判断条件看下。就和你c编程一样遇到问题调试输出下中间值看是多少,看看是这个判断语句返回了false还是true而后面的问题

 回到顶部
帅哥哟,离线,有人找我吗?
icanfly
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:49 积分:90 威望:0 精华:0 注册:2012/4/27 21:27:42
  发帖心情 Post By:2015/8/9 18:50:48 [只看该作者]

我知道原因了:这个逻辑运算符“<”的优先级居然大于了前面的乘法运算,和C/C++还有点不一样。把之前的运算加上括号就行了。

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By: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编辑过]

 回到顶部