Самый простой способ посчитать количество знаков после запятой?

 
Есть переменная.
Например:
double а=0.02;

Нужно написать функцию, которая считала бы количество знаков после запятой.

Строковые функции не хочется использовать. Думаю, они замедляют программу.
 
igrok333:
Есть переменная.
Например:
double а=0.01;

Нужно написать функцию, которая считала бы количество знаков после запятой.

Строковые функции не хочется использовать. Думаю, они замедляют программу.

зачем, цель какая ?

 

изучайте https://www.mql5.com/ru/forum/287618

там все есть

себе взял этот https://www.mql5.com/ru/forum/287618/page13#comment_9797522

для определения количества знаков после запятой для нормализации объёма ордера (лот) работает без проблем

int GetDigitsInVolumeStep()
{
   int result = 0;
   long i = 10000000, k = long(::SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP) / 0.0000001);
   while(result < 7 && k % i > 0) {
      i /= 10;
      result++;
   }
   return(result);
}
 
Igor Makanu:


для определения количества знаков после запятой для нормализации объёма ордера (лот) работает без проблем

для лотов можно через логарифм, без циклов

 
Iurii Tokman:

для лотов можно через логарифм

можно

но меня пока устраивает

 
Iurii Tokman:

зачем, цель какая ?

там в программе нужно узнать количество знаков после запятой,
потом округлить до этого количества знаков.

 
igrok333:

там в программе нужно узнать количество знаков после запятой,
потом округлить до этого количества знаков.

в чем ? в цене ?
"там в программе" - секретная ?

 
Iurii Tokman:

для лотов можно через логарифм, без циклов

можно взять через логарифм с основанием 10.

но это подходит для числа 0,01.

но как сделать для числа 0,02.

 
Iurii Tokman:

в чем ? в цене ?
"там в программе" - секретная ?

просто в числе double.
ну редактирую одну программу.

 
Iurii Tokman:

в чем ? в цене ?
"там в программе" - секретная ?

в программе используется метод "через логарифм".

но она иногда работает некорректно,

так как попадаются числа типа 0,02

 
igrok333:

просто в числе float.
ну редактирую одну программу.

Ну студент, пишет контрольную, во пристали к человеку )) На бирже studwork таких задач полно, а тут сам старается, молодец!

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