一个指标出现了除以零的错误 - 页 4 1234567891011 新评论 Aleksey Vyazmikin 2018.07.04 14:27 #31 代码中的限制,如果1/2=0.5,那么显然现在的四舍五入给出的是0而不是1? 为了测试这个假设,我改变了代码 double d1=(delta_price_high-center_line_point)/((double)limit/2); double d2=(center_line_point-delta_price_low)/((double)limit/2); Vladimir Karputov 2018.07.04 14:28 #32 Aleksey Vyazmikin:完全是垃圾--又出现了除以0的错误来自ME的代码作为一张图片--也许我是瞎子,但我不明白这是怎么回事错误仍然出现在同一行。 文件是一样的,由于增加了打印的代码,错误行发生了偏移。你应该使用一个样式器--你会立即看到你的问题字符串不在检查区域内 if(limit==0) Aleksey Vyazmikin 2018.07.04 14:30 #33 Vladimir Karputov:你应该使用一个样式器--你会立即看到你的问题字符串不在检查区域内 if(limit==0)所以它不需要进入,为什么? Aleksey Vyazmikin 2018.07.04 14:31 #34 这个代码。 int a=1; double test=1/(a/2); 挂上终端。 Vladimir Karputov 2018.07.04 14:32 #35 Aleksey Vyazmikin:代码中的限制,如果1/2=0.5,那么显然现在的四舍五入给出的是0而不是1? 为了测试这个假设,我改变了代码 代码。 //+------------------------------------------------------------------+ //| writeSpicifiedType.mq5 | //| hoz | //| | //+------------------------------------------------------------------+ #property copyright "hoz" #property link "" #property version "1.00" //--- double high=-1.0; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- for(int limit=0;limit<4;limit++) { Print("limit (",limit,")/2 ",limit/2); } } //+------------------------------------------------------------------+ 结果。 Test_en (EURUSD,M30) limit (0)/2 0 Test_en (EURUSD,M30) limit (1)/2 0 Test_en (EURUSD,M30) limit (2)/2 1 Test_en (EURUSD,M30) limit (3)/2 1 Aleksey Vyazmikin 2018.07.04 14:35 #36 Vladimir Karputov:代码。 结果。 这就是问题所在,先前显然1/2的人给了1,而不是0。 Vladimir Karputov 2018.07.04 14:36 #37 Aleksey Vyazmikin:这就是问题所在,以前,1/2一定是1而不是0。不,它总是像那样四舍五入。 Aleksey Vyazmikin 2018.07.04 14:39 #38 Vladimir Karputov:不,它总是这样四舍五入的。所以它毕竟是别的东西... Aleksey Vyazmikin 2018.07.04 14:50 #39 改变了打印的代码 if(limit/2==0) { limit=2; Print("start_time - ",TimeToString(start_time,TIME_DATE|TIME_MINUTES)," stop_time - ",TimeToString(stop_time,TIME_DATE|TIME_MINUTES)); Print("start_index=",start_index, " stop_index=",stop_index); } 现在我得到... 2018.07.04 15:47:07.959 IndDrafter (Si-9.18,H1) start_time - 2017.08.10 11:00 stop_time - 2017.08.10 11:00 2018.07.04 15:47:07.959 IndDrafter (Si-9.18,H1) start_index=2012 stop_index=2012 怎么会呢? [删除] 2018.07.04 14:53 #40 Aleksey Vyazmikin:改变了打印的代码现在我得到...怎么说呢?一切都是正确的。如果用公式limit=(int)(stop_time-start_time)/PeriodSeconds(_Period) 来计算极限。 那么结果将是=0。 现在我们需要看看停止和开始时间是如何形成的。 1234567891011 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
代码中的限制,如果1/2=0.5,那么显然现在的四舍五入给出的是0而不是1?
为了测试这个假设,我改变了代码
完全是垃圾--又出现了除以0的错误
来自ME的代码作为一张图片--也许我是瞎子,但我不明白这是怎么回事
错误仍然出现在同一行。
文件是一样的,由于增加了打印的代码,错误行发生了偏移。你应该使用一个样式器--你会立即看到你的问题字符串不在检查区域内 if(limit==0)
你应该使用一个样式器--你会立即看到你的问题字符串不在检查区域内 if(limit==0)
所以它不需要进入,为什么?
这个代码。
挂上终端。
代码中的限制,如果1/2=0.5,那么显然现在的四舍五入给出的是0而不是1?
为了测试这个假设,我改变了代码
代码。
结果。
代码。
结果。
这就是问题所在,先前显然1/2的人给了1,而不是0。
这就是问题所在,以前,1/2一定是1而不是0。
不,它总是像那样四舍五入。
不,它总是这样四舍五入的。
所以它毕竟是别的东西...
改变了打印的代码
现在我得到...
怎么会呢?
改变了打印的代码
现在我得到...
怎么说呢?
一切都是正确的。如果用公式limit=(int)(stop_time-start_time)/PeriodSeconds(_Period) 来计算极限。
那么结果将是=0。
现在我们需要看看停止和开始时间是如何形成的。