Напомните, плз (опять про даблы) - страница 2

 
zxc писал(а) >>

....Наверное, это то что вам надо. Разберетесь с функцией, и тогда вам реализовать свои замыслы быдет совсем просто ;)

Благодарствую. Поразбираюсь.

Я, вобщем-то, сходный код набросал, но так не изящно, кривовато,

да еще навротил проверок на запятую-точку, возможные разделители разрядов,

на буквы - решил универсально все сделать. На случай применения при экспорте

внешних данных. Вобщем зарапортовался и совсем в ступор вошел .

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

.

 

Короче, вот, что наваял:

int start()
{
bool     bNext;
int      i, iD;
double   dSrc, dD;
   
   //        1234567890
   dSrc = -1.23006400;
   //dSrc = 10.0/3.0;
   
   i = -1; 
   bNext = True;
   while(bNext && (i < 17))
      {
      i++;
      dD = dSrc * MathPow(10, i);
      iD = dD;
      bNext = !((dD - iD) == 0);
      }
      Print(i, "; ", bNext, "; ", DoubleToStr(dSrc, i));
      
return(0);
}   

Но все равно чую, как то проще должно быть. Изящнее...

 

Короче, вот, что получилось. Поизящнее.

Вроде бы работает и пользоваться можно.

// +------------------------------------------------------------------+
// | fDbl2Str(double pdSrc) - return zero-cutted string
// +------------------------------------------------------------------+
string fDbl2Str(double pdSrc)
{
   int i = 8;
   while((i > 0) && (NormalizeDouble(pdSrc, i) == NormalizeDouble(pdSrc, i - 1))) {i--;}
return(DoubleToStr(pdSrc, i));
}

Жаль, что приходится время тратить на подобные ж-гландовые ухищрения...

 
ужасно что нет простых нормальных средств без извращений
Причина обращения: