错误、漏洞、问题 - 页 2360

 
Aliaksandr Hryshyn:

开发者的错误。

脚本不能编译,请查明原因))。使用所附文件。


同样的文件。


所有编译,删除错误行

 
Vladimir Pastushak:

一切都可以编译,删除错误行

编辑器中的行长 限制

 
Fast528:

在编辑器中限制行的长度

当一个字符串的长度超过4095个字符时,就不会显示。

 
fxsaber:

请向一个傻瓜解释,为什么这里会发生这种情况?

假设我们只能对奇数 进行运算,如果一个算术运算的 结果变成了偶数,则假定它是离上面最近的奇数,那么

(43 -  5) - 7  = (38)39 - 7  = (32)33
 43 - (5  + 7) = 43 - (12)13 = (30)31 

33 != 31

 
fxsaber:
我花了几个小时来寻找分歧。我发现这个


其特殊性双双知道,但不是这样的,如果你改变加法的顺序(除了相对 非常不同的数字),结果是不同的!"。请向一个傻瓜解释,为什么这里会发生这种情况?

你只需要看一下源头的底部两行。

正如你自己喜欢说的那样,为在规定的精度极限上将双数四舍五入的精度所规定的算式是 "歪的"。原因很明显,在双重表示法中,通过不同的方法(交换乘数、打开括号等)得到的相同数值可能会变成不同的数字,从不同的方面最大限度地接近所需的数字。四舍五入到下一个数字,然后你决定如何处理最后一个数字......。

 
fxsaber:

当你做size+point时,你会溢出尾数,然后进行四舍五入/拒绝(取决于fpu模式)。

   float avg = 0.7;
   float size = 0.3;
   float point = 0.4;

   float r1 = avg - size - point;
   float r2 = avg - (size + point);
   cout << "r1 == r2 ? " << (r1 == r2) << '\n';

   cout << "-----avg-----\n";  prfl(avg);
   cout << "-----size-----\n"; prfl(size);
   cout << "-----point-----\n"; prfl(point);
   cout << "-----avg - size------\n"; prfl(avg - size);
   cout << "-----(avg - size) - point------\n"; prfl((avg - size) - point);
   cout << "-----size + point------\n"; prfl(size + point);
   cout << "-----avg - (size + point)------\n"; prfl(avg - (size + point));
r1 == r2 ? 0
-----avg-----
implicit_1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
exponenta = -1
sign = 0
-----size-----
implicit_1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0
exponenta = -2
sign = 0
-----point-----
implicit_1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1
exponenta = -2
sign = 0
-----avg - size------
implicit_1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
exponenta = -2
sign = 0
-----(avg - size) - point------
implicit_1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
exponenta = -25
sign = 1
-----size + point------
implicit_1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0
exponenta = -1
sign = 0
-----avg - (size + point)------
implicit_1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
exponenta = -24
sign = 1

一般来说,只有在以相同的方式获得的情况下,两个复数的结果才会相同(除非你计算我们处理整数的情况)。

 
A100:
Ilya Malev:
pavlick_

谢谢你的回答,每一个都很有价值。我第一次遇到(注意到),在PRICE中添加相同的项目,但顺序不同,会产生不同的PRICE。因此,在测试器中的结果不同。

在讨论配音时,很清楚什么时候以及为什么它们可以相互比较。但价格加分和不同的输出结果是第一次TC结果受到如此明显的影响。


事实证明,为了避免这些歧义,我们需要在计算出的价格上增加一个不到半分的米字形,然后再进行归一化。

 
fxsaber:

事实证明,为了避免这些含糊不清的情况,我们需要在计算出的价格上增加一个仅仅不到半个点的分数,然后再进行归一化处理。

还有一种观点认为,如果TC的结果从这种无关紧要的事情中改变了很多,你应该说 "谢谢",并把这种TC扔进垃圾桶。

 
fxsaber:

谢谢你的答复,每一个都很有价值。第一次遇到(注意到)将相同的项目添加到一个PRICE中,但以不同的顺序创建不同的PRICE。因此,在测试器中的结果不同。

在讨论配音时,很清楚什么时候以及为什么它们可以相互比较。但价格加分和不同的输出结果是第一次TC结果受到如此明显的影响。


事实证明,为了避免这些歧义,我们需要在计算出的价格上增加一个不到半分的米字形,然后再进行归一化。

也许它值得在功能上进行映射?

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2017.02.24
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Ilya Malev:

还有一种观点认为,如果一个TC的结果从这样的小事情中改变了很多,你应该说 "谢谢",并把这样的TC扔进垃圾桶。

他们没有什么变化,他们只是在变化。这足以让我们开始调查。