- RE: Количество цифр в int,long,double, XMan, 00:03 , 24-Июл-01 (1)
По идее нет и быть не должно. В Linux кажись так: int - 32 байта long - 64 байта double - 10 байт (если правильно помню), но на разных архитектурах может изменяться. Связано это с разрядностью регистров процессора и сопроцессора.
- RE: Количество цифр в int,long,double, Sasha_Ka, 12:58 , 24-Июл-01 (2)
Да я это понимаю ... но как мне решить допустим такую проблему: char *str = new char [???? + 1]; sprintf(str,"%d",<мое любимое число>); не ужели, не где, в системе не описано сколько, надо выделить памяти ???????
- RE: Количество цифр в int,long,double, lexa, 16:20 , 24-Июл-01 (3)
d = va_arg( ap, int ); if( d == 0 ) { n = 1; } else if( d < 0) { n = 2 ( int )log10( abs( d ) ); } else { n = 1 ( int )log10( d ); } query = ( char* )remem( query, n ); // пямять выдели sprintf( query, "%s%d", query, d ); я делал вот так для создания запроса в SQL, аналогично можно сделать и с другими типами (целыми), но вот как быть с плавающей точкой - пока непридумал ...
- RE: Количество цифр в int,long,double, Sasha_Ka, 17:08 , 25-Июл-01 (6)
Да это конечно выход но ..... не проше ли просто определить дефайне #define MAX_INT 10 - RE: Количество цифр в int,long,double, Cheshir, 15:11 , 27-Июл-01 (8)
все, в общем, просто - надо разделить целую и дробные части (floor), потом взять ln(дробная)/ln(0.1) и прибавить целую...
- RE: Количество цифр в int,long,double, romanSA, 11:07 , 09-Авг-01 (9)
Судя по фрагменту кода, ты пользуешься C++. В этом случае можно предложить следующее:#include <strstream> double a = 3.1415926; ostrstream os; os << a; os.str () будет содержать значение 3.1415926 в текстовом виде. При желании можно задать практически любой формат (см. справочники по C++). P.S. Можно использовать и ostringstream (заголовок <sstream>), но он есть не во всех реализациях C++.
- RE: Количество цифр в int,long,double, Cheshir, 11:54 , 25-Июл-01 (4)
Народ, че вы издеваетесь над человеком? Все гораздо проще: char* c=new char[sizeof(double,int,float - чего хошь)+1(а зачем +1???)]
- RE: Количество цифр в int,long,double, lexa, 16:20 , 25-Июл-01 (5)
очень в этом неуверен: например, бывает такое число 65535. Столько тут цифр - прально 5! и массив нать выделить под 6! а если сказать sizeof( int ) - то получим максимум 4! так что неувязочка :( p.s. (но в 65535 - эт конечно непредел для int святое дело, но самый простой пример ...)
- RE: Количество цифр в int,long,double, Cheshir, 12:14 , 26-Июл-01 (7)
аааа :))) ну так и сразу надо говорить :) я-то другое подумал :))) ну тогда есть маленько иные варианты...1) обычно люди не извращаются, делают достаточно ёмкий буфер и после циферок втыкают нолик; 2) можешь попробовать воспользоваться sprintf - он тебе как надо навыводит, но туда тоже надо длину массива, однако тут можно задать заранее, скока циферок тебе надо; 3) еще можно немного математики (этот вариант - с целыми, однако могешь испоганить): если в библиотеке есть 10-ный логарифм, то так: len=log(число)+1; если нет, то так: len=ln(число)/ln(10)+1; Я, правда, обычно пользуюсь 1-м способом, иногда, если с плавающей точкой, вторым :)
- RE: Количество цифр в int,long,double, Арлекин, 17:46 , 13-Авг-01 (10)
Коллеги, объясните, для какого такого аппарата пишется упоминаемый софт ? Или экономия на каждом байте - пунктик ? При правильной организации классов ( С ) память выделяется и уничтожается по мере необходимости. В данном случае почему бы не выделить ну 64 байта, например, и не морочить себе башку ! Ради экономии десятка байт считать логарифмы ????? Увольте ! Я еще понял бы если это пишется под спецпроцессоры, где памяти всего по 512 байт, но во всех остальных случаях - это программирование ради искусства ( или контрольная работа ). Сорри.
|