以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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; [此贴子已经被作者于2015/8/10 10:15:04编辑过]
|