Форум программистов, компьютерный форум CyberForum.ru

Как преобразовать большое число в строку - C++

Восстановить пароль Регистрация
 
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
20.05.2012, 00:57     Как преобразовать большое число в строку #1
Делаю такое преобраование

C++
1
2
3
4
char szbuff[255];
double X=3292373930;
sprintf(szbuff, "%g", X);   
string X_str=szbuff;
В результате получаю X_str равно 3292370000 при записи в БД
а в текстовый файл пишет 3.29237e+009

как сделать так чтобы в строковую переменную большие числа писались без изменений
Нужно что нить универсально, числа могут быльшими могут быть маленькими
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
20.05.2012, 11:15     Как преобразовать большое число в строку #2
Цитата Сообщение от nill Посмотреть сообщение
"%g"
%lf
Но если числа будут больше 15 знаков, то без изменений не получится.
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
20.05.2012, 17:52  [ТС]     Как преобразовать большое число в строку #3
diagon,
3292373930.000000
В результате получил число с 6 нулями после точки, а как сдеать чтобы не было нулей ?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
20.05.2012, 18:18     Как преобразовать большое число в строку #4
%.0lf
И еще 2 замечания:
1) Зачем использовать double, если есть long long?
2) Использовать sprintf в с++ очень плохо, используйте stringstream'ы либо boost::lexical_cast.
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
20.05.2012, 19:00  [ТС]     Как преобразовать большое число в строку #5
1) Пока все влазиет и в double, или long double проще преобразовать в строку ?
2) А можно пример stringstream, я при работе со строками всегда использовал sprintf, о другом даже не слышал
boost не надо, там надо инклуды подключать всякие
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
20.05.2012, 19:07     Как преобразовать большое число в строку #6
Цитата Сообщение от nill Посмотреть сообщение
1) Пока все влазиет и в double, или long double проще преобразовать в строку ?
long long - целое число, а также в него влезает больше цифр.

Цитата Сообщение от nill Посмотреть сообщение
А можно пример stringstream, я при работе со строками всегда использовал sprintf, о другом даже не слышал
C++
1
2
3
stringstream sst;
sst << 123456;
string str = sst.str();// str == "123456"
Цитата Сообщение от nill Посмотреть сообщение
boost не надо, там надо инклуды подключать всякие
C бустом основная проблема - установить его, но это полностью окупается различными ништяками.
Например, ваш код можно записать с помощью буста, как
C++
1
string X_str = boost::lexical_cast< string > (3292373930);
Преобразования между другими типами делаются так же легко.
Yandex
Объявления
20.05.2012, 19:07     Как преобразовать большое число в строку
Ответ Создать тему
Опции темы

Текущее время: 15:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru