Как написать значение double большого(маленького) типа? - страница 2

 
tara:

Бодаться будем?

Зачем? Вникните, вам предложили альтернативную запись, которая компилится.
 
MetaDriver:

1. В исходном примере нарисована трудность при инициализации массива. Я добивался работоспособности именно для этого случая. Для остальных проще (имха).

2. Обязательно. :) Вот этот код работает. Проверьте.

Компилироваться будет - работать не будет. Длина константы 15 знаков только. После 15-го знака мусор. Проверял давно, как-то...
 
TheXpert:
Зачем? Вникните, вам предложили альтернативную запись, которая компилится.
Мужики, вы серьезно, или для смеха?
 
Zhunko:
Компилироваться будет - работать не будет. Длина константы 15 знаков только. После 15-го знака мусор. Проверял давно, как-то...

Время от времени нужно перепроверять. Терминал, как известно, меняется. Да и наши глюки тоже (хотя и медленнее). Код есть, скопируйте в скрипт и запустите. Потом сравните вход/выход. Лень?

 
tara:
Мужики, вы серьезно, или для смеха?
Одно другое не исключает.
 
tara:
Мужики, вы серьезно, или для смеха?
Найдете другой способ, свистните.
 
MetaDriver:

Время от времени нужно перепроверять. Терминал, как известно, меняется. Да и наши глюки тоже (хотя и медленнее). Код есть, скопируйте в скрипт и запустите. Потом сравните вход/выход. Лень?

Проверил код. Да! Офигеть, теперь 24 знака!
 
TheXpert:
Найдете другой способ, свистните.
Так бы сразу и сказали.
 

Объявляем строковый массив, пропускаем через функцию и получаем массив double: 

int start()
  {
//----
   string sMass[]={"1.1111E-2","1.1111E2","1.1111"};
   double dMass[];
   StrEToDouble(sMass,dMass);
   
      for(int i=0;i<ArraySize(dMass);i++)Alert(dMass[i]);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

void StrEToDouble(string aString[],double & aDouble[]){
   ArrayResize(aDouble,ArraySize(aString));
      for(int i=0;i<ArraySize(aString);i++){
         int pos=StringFind(aString,"E",0);
            if(pos==-1){
               aDouble[i]=StrToDouble(aString[i]);
            }
            else{
               aDouble[i]=StrToDouble(StringSubstr(aString[i],0,pos))*MathPow(10,StrToInteger(StringSubstr(aString[i],pos+1,StringLen(aString[i])-pos-1)));
            }
      }

}
 

Извините, гулял с собачкой.

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