Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5 - страница 3

 
A100:

А при чем здесь приведение?

Print(500000000000.00001); // 500000000000.0
 
Просто потрясающе! Так упорно и на полном серьезе  доказывать, что неправильный ответ является правильным. Невиноватая я, он сам пришел))
 
Alexandr Sokolov:

Это здесь на форуме так почему-то, а в редакторе всё как обычно

Ну, дык я проверил бы, не использовал ли я это имя еще где-нибудь. 

 
Алексей Тарабанов:

Ну, дык я проверил бы, не использовал ли я это имя еще где-нибудь. 

В редакторе имя переменной value не отображена синим цветом (это так только на форуме). Да и синим цветом она отображается только в версии MQL4, а на MQL5 как обычно чёрным. Почему так я не знаю, да и на правильность кода это вроде как не влияет, жалоб со скринами ведь никто не сбрасывал)

 
fxsaber:

Такого числа нет среди double. Есть примерно равное ему 500000000.00100016593933105. Оно и присваивается.

Угадали. И сколько здесь знаков после запятой? 8?

 
Алексей Тарабанов:

Не у " Вас 8", а в mql по умолчанию 8. Документацию почитать не умеем?

Что в MQL по умолчанию 8 ? Где ссылка на документацию? И какое это имеет отношение к первоначальной задаче?

 
   double x=500000000.0001;
   
   Alert((500000000.0001==NormalizeDouble(500000000.0001,4))); // true
 
int d(double x){
   int n;
   for(n=0;n<8;n++){
      if(x==NormalizeDouble(x,n)){
         return(n);
      }
   }
   return(n-1);
}
 
Dmitry Fedoseev:

Преклоняю колено. 

 

Dmitry Fedoseev:

int d(double x){
   int n;
   for(n=0;n<8;n++){
      if(x==NormalizeDouble(x,n)){
         return(n);
      }
   }
   return(n-1);
}
Это тоже думаю рабочий вариант, правда я пока ничего не проверял но саму задумку я понял, а ошибки можно по ходу исправить (если они есть)
Причина обращения: