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

 
Aliaksandr Hryshyn:
Почему?

Вот дополнение

void OnStart()
{
 double p = 0.07;
 Print(p);
 Print(log10(p));
}/*******************************************************************/

Результат

2018.11.05 10:45:32.678 !00 (GBPJPY,H1) 0.07000000000000001
2018.11.05 10:45:32.678 !00 (GBPJPY,H1) -1.154901959985743
 
Alexey Viktorov:

Вот дополнение

Результат

MathAbs(log10(Point()))
Это проверьте).
 
А давайте будем искать, как слаживать без оператора + .
 
Aliaksandr Hryshyn:
MathAbs(log10(Point()))
Это проверьте).

Зачем мне это надо? Я и так знаю что 0.00001 печатается без искажения. Ведь вопрос темы заключается в определении количества десятичных знаков любого числа, а не только _Point . Я показал вам в каких вариантах ваше предложение работать не будет.

 

в качестве разминки ума - дробную часть надо представить в виде натуральной дроби и что-то делать с делимым/делителем (найти ближайшую непериодичную дробь например)

телепатически узнать "кол-во знаков которые задал отправитель" не поможет, но весело

 
   double b=3.00000000000000001;
   int i;
   for(i=0; i<16; i++)
    if(fabs(b-NormalizeDouble(b,i))<DBL_EPSILON) break;
   Print(NormalizeDouble(b,i)," : ",i);


 

Опомнитесь. Это бред, который даже не следует обсуждать всерьез. 

У автора просто тотальное непонимание внутреннего устройства double-переменных.

 
Mesaoria:

Опомнитесь. Это бред, который даже не следует обсуждать всерьез. 

У автора просто тотальное непонимание внутреннего устройства double-переменных.

Я не утверждал что всё знаю, лучше скажите в чём ошибка или покажите свой вариант
 
Mesaoria:

Опомнитесь. Это бред, который даже не следует обсуждать всерьез. 

У автора просто тотальное непонимание внутреннего устройства double-переменных.

Ну просветите нас сирых и несчастных.

 

Когда будет окончательно готов алгоритм? Давно назрела необходимость его использовать.