错误、漏洞、问题 - 页 705 1...698699700701702703704705706707708709710711712...3184 新评论 Victor 2012.04.07 06:49 #7041 Yedelkin: 而关于Print() 的缺陷问题,我们暂且不做回答,好吗?:) 如你所愿。 Yedelkin 2012.04.07 07:06 #7042 victorg: 不管怎么样。 好的。那我就壮壮胆子吧。因此,Print() 函数的描述说" 双倍类型的 数据以点后16 位小数的精度打印"。事实上,事实证明,Print()函数输出的数据有些圆滑。void OnStart() { double a,b; a=7.0/200.0; b=7.0/a; Print("Print(b)=",b); Print("Print(DoubleToString(b,16))=",DoubleToString(b,16)); }ND 0 victorg2 (EURUSD,M1) 11:04:42 Print(b)=200.0 MP 0 victorg2 (EURUSD,M1) 11:04:42 Print(DoubleToString(b,16))=199.9999999999999716 Документация по MQL5: Основы языка / Типы данных / Вещественные типы (double, float) www.mql5.com Основы языка / Типы данных / Вещественные типы (double, float) - Документация по MQL5 Vladimir Gomonov 2012.04.07 11:19 #7043 Yedelkin:好的。那我就壮壮胆子吧。因此,Print() 函数的描述说" 双倍类型的 数据以点后16 位小数的精度打印"。实际上,事实证明,Print() 函数产生的数据略为圆滑。ND 0 victorg2 (EURUSD,M1) 11:04:42 Print(b)=200.0MP 0 victorg2 (EURUSD,M1) 11:04:42 Print(DoubleToString(b,16))=199.99999999999999999716123.4567890123456(7>5,因此四舍五入) 它似乎与描述的一样。故障是什么? 没有打印出零吗? Yedelkin 2012.04.07 12:05 #7044 MetaDriver: 一切似乎都符合描述。有什么问题吗?"零 "没有印出来吗? 错误在于Print()函数不能打印"精确到小数点后16 位的 双数类型的 数据"。 --- 2012.04.07 13:26 #7045 Yedelkin: 错误在于Print()函数没有输出"数据类型为double,精度为点后16 位小数"。检查 Print("Print(b)="+ b); Yedelkin 2012.04.07 13:51 #7046 sergeev:检查没有花心思去检查。//+------------------------------------------------------------------+ //| ProjectName | //| Copyright 2012, CompanyName | //| http://www.companyname.net | //+------------------------------------------------------------------+ void OnStart() { double a,b; a=7.0/200.0; b=7.0/a; //Print("Print(b)=",b); Print("Print(b)="+b); Print("Print(DoubleToString(b,16))=",DoubleToString(b,16)); } //+------------------------------------------------------------------+首先,编译器产生了 "从'数字'到'字符串'的隐式转换Victorg2.mq5 12 22"。第二。 IS 0 victorg2 (EURUSD,M1) 17:46:45 Print(b)=200 PJ 0 victorg2 (EURUSD,M1) 17:46:45 Print(DoubleToString(b,16))=199.9999999999999716 Renat Fatkhullin 2012.04.07 15:35 #7047 使用适当的PrintFormat函数 进行全面的格式控制。void OnStart() { double a,b; a=7.0/200.0; b=7.0/a; printf("Format: %.15lf",b); PrintFormat("Format: %.15lf",b); } Format: 199.999999999999970 Format: 199.999999999999970 打印时默认为正常的四舍五入模式,即双数到4位。我们将纠正文件。 Документация по MQL5: Общие функции / PrintFormat www.mql5.com Общие функции / PrintFormat - Документация по MQL5 Vladimir Gomonov 2012.04.07 16:56 #7048 请给结构的指针(句柄)(最好也给数组,包括静态的)。 以班级为单位的包裹往往是一个糟糕的解决方案。struct SEmpty { }; class CEmpty { }; void OnStart() { Print("sizeof(SEmpty) = ",sizeof(SEmpty)); Print("sizeof(CEmpty) = ",sizeof(CEmpty)); } 2012.04.07 20:49:38 SizeOf_Test (USDJPY,M30) sizeof(CEmpty) = 16 2012.04.07 20:49:38 SizeOf_Test (USDJPY,M30) sizeof(SEmpty) = 0 Renat Fatkhullin 2012.04.07 17:01 #7049 MetaDriver:请给结构的指针(句柄)(最好也给数组,包括静态的)。 你的意思是什么,为什么? Vladimir Gomonov 2012.04.07 17:23 #7050 Renat:1. 在什么意义上和 2.为什么?1. CEmpty *C[]; // Это работает. SEmpty *S[]; // Error: 'SEmpty' - class type expected SizeOf_Test.mq5 19 1 要创建指向结构(数组)的数组,随后进行初始化 for(i){ S[i] = GetPointer(StaticStruct[i]); }2.保持有意义的数据的稳固(打包)阵列。 在处理输出到原始OpenCL缓冲区的数据时(或发送到DLL,写入文件 等),非常重要。同时,可以在不重写数据的情况下重新安排数据访问的顺序(例如,在对 指针进行排序时)。 1...698699700701702703704705706707708709710711712...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
而关于Print() 的缺陷问题,我们暂且不做回答,好吗?:)
不管怎么样。
好的。那我就壮壮胆子吧。因此,Print() 函数的描述说" 双倍类型的 数据以点后16 位小数的精度打印"。事实上,事实证明,Print()函数输出的数据有些圆滑。
void OnStart() { double a,b; a=7.0/200.0; b=7.0/a; Print("Print(b)=",b); Print("Print(DoubleToString(b,16))=",DoubleToString(b,16)); }
MP 0 victorg2 (EURUSD,M1) 11:04:42 Print(DoubleToString(b,16))=199.9999999999999716
好的。那我就壮壮胆子吧。因此,Print() 函数的描述说" 双倍类型的 数据以点后16 位小数的精度打印"。实际上,事实证明,Print() 函数产生的数据略为圆滑。
MP 0 victorg2 (EURUSD,M1) 11:04:42 Print(DoubleToString(b,16))=199.99999999999999999716
123.4567890123456(7>5,因此四舍五入)
一切似乎都符合描述。有什么问题吗?"零 "没有印出来吗?
错误在于Print()函数没有输出"数据类型为double,精度为点后16 位小数"。
检查
Print("Print(b)="+ b);
检查
没有花心思去检查。
首先,编译器产生了 "从'数字'到'字符串'的隐式转换Victorg2.mq5 12 22"。
第二。
IS 0 victorg2 (EURUSD,M1) 17:46:45 Print(b)=200
PJ 0 victorg2 (EURUSD,M1) 17:46:45 Print(DoubleToString(b,16))=199.9999999999999716
使用适当的PrintFormat函数 进行全面的格式控制。
打印时默认为正常的四舍五入模式,即双数到4位。我们将纠正文件。请给结构的指针(句柄)(最好也给数组,包括静态的)。
以班级为单位的包裹往往是一个糟糕的解决方案。
2012.04.07 20:49:38 SizeOf_Test (USDJPY,M30) sizeof(SEmpty) = 0
请给结构的指针(句柄)(最好也给数组,包括静态的)。
你的意思是什么,为什么?
1. 在什么意义上和
2.为什么?
1.
CEmpty *C[]; // Это работает. SEmpty *S[]; // Error: 'SEmpty' - class type expected SizeOf_Test.mq5 19 1
要创建指向结构(数组)的数组,随后进行初始化 for(i){ S[i] = GetPointer(StaticStruct[i]); }
2.保持有意义的数据的稳固(打包)阵列。
在处理输出到原始OpenCL缓冲区的数据时(或发送到DLL,写入文件 等),非常重要。
同时,可以在不重写数据的情况下重新安排数据访问的顺序(例如,在对 指针进行排序时)。