DoubleToString - есть какие-то нюансы по работе с массивами?

 

Добрый день.

Очередной "веселый" глюк с одной из базовых функций.

Загоняем в динамический массив значения индикатора. Подготавливаю к выводу в виде строки. На выходе почему-то получаю обнуление значений.

ArrayResize(ADX_DI_plusBuffer,cnt);
          CopyBuffer(ADX_handle, 1, start_time, cnt, ADX_DI_plusBuffer);                        
          double ttt=1.1234567890;
          string sss1,sss2,sss3;
          for(int i=0;i<cnt;i++)
               {
                sss1=DoubleToString(ttt,6);
                sss2=DoubleToString(ADX_DI_plusBuffer[20],6);
                ttt=ADX_DI_plusBuffer[20];
                sss3=DoubleToString(ttt,6);
               }

Тут ничего сложного. Ресайз динамического массива, объявленного ранее, копирую данные индикатора.

Создаю переменную типа double и присваиваю ей какое-то добланутое значение. Создаю три переменные типа string.

sss1 - нормально получает результат преобразования переменной ttt в string.

ss2 - должно получить значение не нулевого элемента массива с числом, но получает нули.

sss3 - думаю, может, проблема в самом массиве.. Предварительно присваиваем переменной ttt значение элемента массива и потом делаю DoubleToString. Удивительно, но снова вижу нули.


И от, что вижу в дебагере


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

 

knodit:

А как по-другому, кроме "0.000000", можно представить с 6-ю знаками после точки число с порядком -308 ?

 
Уберите ArrayResize и если после CopyBuffer размер массива не изменится смотрите ошибку копирования.
 
JRandomTrader #:

А как по-другому, кроме "0.000000", можно представить с 6-ю знаками после точки число с порядком -308 ?

Задумался. Но не 111 элементов же бесконечно малых.. по всем трем индикаторам одновременно...

 
Alexey Viktorov #:
Уберите ArrayResize и если после CopyBuffer размер массива не изменится смотрите ошибку копирования.
Спасибо. Убрал.