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

 
fxsaber:

Да, восемь.

А почему тогда

void OnStart()
{
        double price = 500000000.0001;
        Print( price, ":", Digits_values( price ));
}

Digits_values возвращает 4 ?

Результат: 500000000.0001:4

 

А здесь сколько цифр после запятой?

void OnStart()
{
        double price = 5000000000.0001;
        Print( price, ":", GetDigits( price ));
}

Видимо столько много что компьютер даже сосчитать не может

Результат: ???

 
A100:

А почему тогда

Digits_values возвращает 4 ?

Результат: 500000000.0001:4

Изучите приведение к string.

 
A100:

А здесь сколько цифр после запятой?

Видимо столько много что компьютер даже сосчитать не может

Результат: ???

Да, как и у 1/3.

 
A100:

Хорошее решение обычно работает правильно

Возможно я не всё проверил, но когда я протестировал два раза на MQL4, выводимые значения были верны

 
fxsaber:

Изучите приведение к string.

А при чем здесь приведение? Есть исходное число 500000000.0001

Вопрос состоит в том сколько в нем знаков после запятой? Ответ 4, а у Вас 8

 
A100:

Есть исходное число 500000000.0001

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

 
A100:

А при чем здесь приведение? Есть исходное число 500000000.0001

Вопрос состоит в том сколько в нем знаков после запятой? Ответ 4, а у Вас 8

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

 
Alexandr Sokolov:

Думаю не у одного меня была редкая ситуация когда нужно было получить количество десятичных знаков после запятой, а функция Digits() работает только с котировками, и к тому всему ещё и информации по этому поводу нигде нет (по крайней мере на момент написания этого поста ранее её я не находил, поэтому хочу показать какое решение нашел я)?


Как оказалось суть банально простая, но всё же имеет один недостаток - эта функция не распознаёт нули если после них нет иных цифр. Например если функции дать число 0,01 она вернёт 2, а если 0,0000 она вернёт 0 (то есть четыре нуля она не видит). Поэтому учитывайте этот недостаток в своих разработках


Код на MQL4



Вас ни капельки не тревожит то обстоятельство, что параметр Value у Вас голубеньким цветом нарисован? 

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

Вас ни капельки не тревожит то обстоятельство, что параметр Value у Вас голубеньким цветом нарисован? 

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

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