Ошибки, баги, вопросы - страница 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:

Просто предел  для типа datetime определен некорректно:

Видимо пределел определен с учетом возможности одновременного представления локального времени по GMT или UTC. Тогда логично было бы сделать более широкие пределы (+/-12 часов) от -43'200 до 32'535'291'599
 
Fleder:

Компилятор воспринимает число 13.7 как тип double. Но в то же время это число может быть без потерь преобразовано в тип float

и это предупреждение излишне. 

Откуда у Вас сведения, что вещественное число 13.7 может быть преобразовано в тип float без потерь?
 
stringo:
Откуда у Вас сведения, что вещественное число 13.7 может быть преобразовано в тип float без потерь?

А разве нет? Число 13.7 = 0.137*1е+2. Разве преобразовывая три разряда после запятой в тип float  можно допустить потери? По моим наблюдениям точность начинает теряться при попытке преобразовать

числа от шести разрядов после запятой и более. 

 

Пробовал использовать тип float для сохранения пятизначных котировок символов (например, 1.38829) в бинарный файл. После их обратного чтения из файла и попыток отобразить на чарте в  виде

свечного индикатора наложенного на свечи самого чарта замечал кое-где небольшие несовпадения. Но после нормализации до пятого знака они исчезали. 

Но там происходили двойные потери точности: сначала из double в float, а затем обратно из float в double. 

 
https://www.mql5.com/ru/docs/convert/normalizedoubleFleder:

А разве нет? Число 13.7 = 0.137*1е+2. Разве преобразовывая три разряда после запятой в тип float  можно допустить потери? По моим наблюдениям точность начинает теряться при попытке преобразовать

числа от шести разрядов после запятой и более. 

 

Пробовал использовать тип float для сохранения пятизначных котировок символов (например, 1.38829) в бинарный файл. После их обратного чтения из файла и попыток отобразить на чарте в  виде

свечного индикатора наложенного на свечи самого чарта замечал кое-где небольшие несовпадения. Но после нормализации до пятого знака они исчезали. 

Но там происходили двойные потери точности: сначала из double в float, а затем обратно из float в double. 

Нет. Это - бесконечная дробь. Мы писали, писали, а Вы не читаете
 
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:

Тоже возник такой crash. Возникает при запуске скрипта, если не сопадает build Терминала (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 bit :


Причина обращения: