错误、漏洞、问题 - 页 1129

 

A100:
32'535'244'799 != 32'535'215'999 - какое правильное? 

正确的应该是32'535'215'999,即"3000.12.31 23:59:59"

32'535'244'799将是正确的"3001.01.01 07:59:59"

 
Fleder:

数据时间类型 的限制根本没有正确定义。

显然,这个限制的定义是考虑到在同一时间以GMT或UTC呈现当地时间的可能性。那么,在-43'200到32'535'291'599之间做一个更广泛的范围(+/-12小时)就有意义了
 
Fleder:

编译器将数字13.7作为双倍类型处理。但同时,这个数字可以无损地转换为浮点数类型

而这种警告是不必要的。

你怎么知道实数13.7可以毫无损失地转换为浮点数类型?
 
stringo:
你怎么知道实数13.7可以毫无损失地转换为浮动类型?

不是吗?数字13.7=0.137*1e+2。将三位小数转换为float类型,是否有任何损失?就我所见,当你试图转换时,准确性就会丧失。

小数点后六位或更多的数字。

我试着用float类型将五位数的字符引号(如1.38829)保存到二进制文件。在从文件中读回它们,并试图在图表上显示它们的情况下,作为

应用于图表本身的烛台的图表指标有一些小的差异。但在归一化到第五位数之后,它们就消失了。

但那里有双重的准确性损失:首先是从双倍数到浮动数,然后再从浮动数回到双倍数。

 
https://www.mql5.com/ru/docs/convert/normalizedouble Fleder:

不是吗?数字13.7=0.137*1e+2。将三位小数转换为float类型,是否有任何损失?就我所见,当你试图转换时,准确性就会丧失。

小数点后六位或更多的数字。

我试着用float类型将五位数的字符引号(如1.38829)保存到二进制文件。在从文件中读回它们,并试图在图表上显示它们的情况下,作为

应用于图表本身的烛台的图表指标有一些小的差异。但在归一化到第五位数之后,它们就消失了。

但是有一个双重的准确性损失:首先从双倍数到浮动数,然后再从浮动数回到双倍数。

不,它是一个无限的分数。我们写了,但你不读。
 
stringo:
不,这是一个无尽的分数。我们写了写, 你却不看

我们!但损失发生在 "技术上"(格式的特殊性)和那些甚至不需要的分数上。

void OnStart()
{
  Print((float)(13.7));   //13.7 - потерь "не видно"
  Print((double)(13.7));  //13.7 - здесь тоже
}
Особенности работы с числами типа double в MQL4 - Статьи по MQL4
  • www.mql5.com
Особенности работы с числами типа double в MQL4 - Статьи по MQL4: примеры использования экспертов, тестирования и оптимизации
 
A100:

我也有过这种崩溃。在运行脚本时,如果终端(910)和编译器(921)不匹配,会出现这种情况。

以下是代码

class A  {
        int     array[];
};
void OnStart()
{
        A *a = new A();
        if ( a != NULL )
                delete( a );
}

编译器930,终端910。结果。

 
A100:

以下是代码

编译器930,终端910。结果。

为什么终端是910,而编译器是930?

如果两者都是910,那么这个脚本就不会 "崩溃"。

 

只是没有一个终端(我不太清楚,但我认为这在市场上是很常见的)。

我可以从...\MQL5\Scripts文件夹中分享原件。

附加的文件:
Crash.ex5  4 kb
 
A100:

只是没有一个终端(我不太清楚,但我认为这在市场上是很常见的)。

我可以从...\MQL5\Scripts文件夹中分享原件。

嗯,这就是我不得不证明的Win XP 32位


原因: