Info : поиск кол-во знаков числа - страница 2

 
Integer >>:

Надо еще нули справа после запятой откинуть.

А они там есть? Дополняются до 8 знаков?

 
Zhunko писал(а) >>

А они там есть? Дополняются до 8 знаков?

Почему-то у меня StringLen() от дабла равно -1. Значит надо дабл преодразовывать в стринг и от нулей никуда не деться.

 

Ночь... Ужасные ошибки делаем... Вот так:

// Функция возвращает количество значащих разрядов числа.
int AmountDigits (double Value, // Число для вычислений количества в нём знаков.
                  int    Mode)  // 0 - поиск осуществляется слева от запятой (в целой части).
                                // 1 - поиск осуществляется справа от запятой (в дробной части).
                                // 2 - поиск осуществляется во всём числе.
 {
  int    i, j;
  int    Length;
  string String = "";
  //----
  switch (Mode)
   {
    case 0: return (StringFind (DoubleToStr (Value, 1), ".", 0));
    case 1:
     {
      String = DoubleToStr (Value, 8);
      Length = StringLen (String);
      for (i = Length - 1, j = 8; i > 0; i--, j--) if (StringSubstr (String, i, 1) != "0") return (j);
     }
    case 2:
     {
      String = DoubleToStr (Value, 8);
      Length = StringLen (String) - 1;
      for (i = Length; i >= 0; i--) if (StringSubstr (String, i, 1) != "0") return (i);
     }
   }
 }
Но у неё ограничение в 8 знаков после точки. В моих предыдущих ограничений нет. Только в 15 значащих от MQL4.

Проверил. Всё работает. Можно подумать о 15 знаках...

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