Почему 0.0039 > 0.0039 и 0.0039 >= 0.0039 одинаковы

 

Здравствуйте, чтобы не бросаться словами написал сову. Сами всё поймёте.

Внутри равенство:

extern double iClose_Signal = 1.1050;
extern double iMA_Signal = 1.1011;
extern int iMA_Filter_OpenLong = 39;
extern double pp = 0.0001;
extern int pd = 4;

.....

bool result = false;

//---
double iMA_Filter = NormalizeDouble(iMA_Filter_OpenLong*pp,pd);
//---

//---
if (iClose_Signal - iMA_Signal > iMA_Filter) result = true;
else result = false;

Вопрос, почему при 0.0039 > 0.0039 возвращается True, когда результат должен быть False. То есть обработка идет как при 0.0039 >= 0.0039.

Может это тонкость mql, которую я упустил.


Заранее спасибо за ответ.

Файлы:
 
Pirat:

Здравствуйте, чтобы не бросаться словами написал сову. Сами всё поймёте.

Внутри равенство:

Вопрос, почему при 0.0039 > 0.0039 возвращается True, когда результат должен быть False. То есть обработка идет как при 0.0039 >= 0.0039.

Может это тонкость mql, которую я упустил.


Заранее спасибо за ответ.

Потому, что там не 0.0039 > 0.0039, а, например, 0.0039000000001 > 0.0039

 

В уравнении же прописаны цифры четко

extern double iClose_Signal = 1.1050;
extern double iMA_Signal = 1.1011;
 

+

double iMA_Filter = NormalizeDouble(iMA_Filter_OpenLong*pp,pd);


То есть 99% 0.0039 > 0.0039

 
Pirat:То есть 99% 0.0039 > 0.0039

вы выполнили операцию, этого достаточно чтоб нормализованные числа стали не нормализованными.

iClose_Signal - iMA_Signal
читайте FAQ
 
Почитайте статью Особенности работы с числами типа double в MQL4, там есть примеры использования функции DoubleToStrMorePrecision(double number, int precision) из стандартной библиотеки stdlib.mq4, которая позволяет проконтролировать численные значения чисел типа double до указанного знака.
 
Хорошо, спасибо
Причина обращения: