Здравствуйте, balearic chill, Вы писали:
BC>Спасибо за первый дельный совет, в конкретной задаче специфика имеется — точность больше двух точек после запятой пока не нужна, но это пока ...
Так по специфике можно не слабо заточить
(и без автоматов

— там выигрыш по данным автора меньше чем в 10 раз)
Например такой дубовый (не самый оптимальный

) код (без проверок — специфика ведь

):
double fn(char* sz)
{
for( double dH = 0; *sz; sz++ )
{
if( *sz == '.' )
{
sz++;
break;
}
dH *= 10;
dH += (*sz) - '0';
}
for( double dL = 0, d = 1.0; *sz; sz++ )
{
d /= 10;
dL += ((*sz) - '0') * d;
}
return dH+dL;
}
//...
double d;
for( int c=1000000; c--; )
d = fn("1.23456");
работает почти в 100 раз быстрее (на VC6 release, 4-й пень), чем:
double d;
for( int c=1000000; c--; )
sscanf( "1.23456", "%lf", &d );